第四章:第35节 PHP常量详细介绍

更新于:2017-03-27 20:35:56

对于函数的学习,先暂停几节,我们把关于变量的一些剩余知识讲一下。


可变变量:


所谓可变变量,就是一个变量的名,又是一个变量。可变变量的语法是php的很特殊的语法——其他语言中少见。在实际应用中不多,楠神简单举个例子,大家了解下。


course.png

效果:


course.png


怎么理解:

1,凡是$符号出现,就会有可能理解为是一个变量

2,第7行代码,第一个“$”出现了,则php将其解释为一个变量,变量名是$v1;

3,我们有知道,$v1的值是”abc”,

4,那么,第一个“$”符号后面的变量名,就得到为“abc”

5,即:echo 试图输出的是变量$abc, 自然是数字10

实际上,理论上,可变变量的嵌套还可以更多,比如:$$$def;   


如果没有特殊的需求,就不推荐大家用可变变量写代码,不易理解,容易出现逻辑问题。


常量:


用于存储一个不会变化也不希望变化的数据的标示符。

常量不再是变量,它像变量一样可以存值,只能是在定义常量的时候存值,后面的代码不能对常量的值修改。

常量命名规则,同变量,但习惯说,常常将常量的名称使用“全大写”形式。


常量有两种定义形式:使用函数define()定义和使用const语法定义


使用define()函数定义:


course.png


看示例:


course.png

效果:

1.png


使用const语法定义:


使用形式: const  常量名 = 常量值;

但const语法只能在“最顶层”的代码域中使用(不能在大括号中)

也即,const语法不能在函数中或条件语句中或其他表示一个“范围”的语句中使用


例如:


1.png


会报语法错误:


1.png

所以定义一个常量推荐用define函数。


如何使用常量:


最常用的方式直接像变量一样拿“名字”使用。

1.png

效果:

1.png

还有一种方法,感觉没什么用处,多此一举,就是用函数constant(“常量名”)获取。不做详细介绍了,自己查手册了解吧。


常量被定义以后,不能被修改:


1.png

结果会出错:

1.png

知道常量的作用了吧,就是定义一个量,这个量只能读,不能被修改。比如说圆周率是3.14,程序员在代码里把3.14写入一个常量里,这样后续的代码需要用到圆周率,直接用常量赋值,可保数据不会被意外修改而出现错误。


常量还有一大作用,就是没有作用域,后续的代码都可以用。


基于上面两点,推荐常量最好在代码最前端定义。


常量变量的区别:

定义形式不同:

使用形式不同:常量无需$符号

可变程度不同:常量的值不可以改变,常量也不可以销毁

作用范围不同:常量具有超全局作用域 (函数内外都可以直接使用)

可用类型不同:常量只能存储标量类型:int,float,string,bool


判断常量是否存在:defined()

判断的结果为布尔值。

常用形式:if ( defined (某常量名) == false ){ .....这里可以去定义该常量;}

实际上,可以这样:

$result = defined (某常量名);    //结果是true或false


使用一个未定义的常量(特殊情况):

使用一个未定义的常量会报一个错误(notice错误)——跟使用一个未定义的变量一样——当然不推荐。

但是:php,此时会得到一个意想不到的结果:似乎该常量存在,并该常量的值就是该名字。

1.png

结果:

1.png


预定义常量:

php语言中,预定了大量的常量,可以直接使用,不用程序员自己去定义了。

其中有些常量,是需要某些模块打开之后才有(比如mysql模块)

比如M_PI(圆周率), PHP_OS(操作系统), PHP_VERSION(php版本号),PHP_INT_MAX(php中的最大的整数值)

参考手册〉附录〉保留字列表〉预定义常量


魔术常量

魔术常量其实是一种值会随着一定的条件(环境)而变化的常量,形式和使用上是常量,但实际上,其值会改变。

比如:__DIR__(当前网页文件的所在目录),__FILE__(当前网页文件),__LINE__(当前这一行)

魔术常量其实类似变量,其值随着不同代码而变化,不区分大小写

参考手册〉语言参考〉常量〉魔术常量


前面第24节,我们就实际用到魔术常量了,用函数dirname(__FILE__)计算出来代码文件所在的一个绝对路径形式的目录地址。


总结:常量和魔术常量是很有实际用处的,程序员应该对常量熟悉掌握。


本节学习代码》》》