上QQ阅读APP看书,第一时间看更新
2.4 常量
常量是指在脚本执行期间不能改变值的量。PHP语言中常量大小写是敏感的,习惯上常量的命名总是大写的,这一点请在使用时注意。
2.4.1 常量的声明
合法的常量名以字母或下划线开始,后面可跟任何字母、数字或下划线。
可以使用define()来定义常量,在PHP 5.3.0以后也可使用const关键词在类定义之外定义常量。常量只能是标量数据(boolean、integer、float、string),也可以定义资源类型(resource)常量,但是应该尽量避免,因为这会造成不可预料的结果。
常量命名示例如下:
<? php // 合法的常量名 define("FOO", "something"); // 定义一个名为FOO的常量 define("FOO2", "something else"); define("FOO_BAR", "something more"); // 非法的常量名 define("2FOO", "something"); const A='AAA'; // 使用const定义一个常量,与define定义效果一样 // 下面的定义是合法的,但应该避免这样做(自定义常量不要以__开头) // 也许将来有一天PHP会定义一个__FOO__的魔术常量 // 这样就会与你的代码相冲突 define("__FOO__", "something"); ?>
常量的作用域是全局的,即在脚本的任何地方都可以使用已经定义的常量。
常量和变量有如下不同:
● 常量前面没有美元符号($)。
● 常量只能用define()和const定义。
● 常量的作用域是全局的。
● 常量一旦被定义就不能被重新定义或者取消定义。
● 常量的值一般是标量。
2.4.2 预定义常量
PHP中有很多预定义常量,也称作魔术常量,其中很多都是由不同的扩展库定义的,只有在加载了这些库时才会出现。几个常见的PHP魔术常量如表2-7所示。
表2-7 PHP中常见的魔术常量
在PHP 7中新增了以下常量:
PHP_INT_MIN PREG_JIT_STACKLIMIT_ERROR ZLIB_NO_FLUSH ZLIB_PARTIAL_FLUSH ZLIB_SYNC_FLUSH ZLIB_FULL_FLUSH ZLIB_BLOCK ZLIB_FINISH
打印以上常量:
echo PHP_INT_MIN; echo "<br/>"; echo ZLIB_NO_FLUSH; echo "<br/>"; echo ZLIB_PARTIAL_FLUSH; echo "<br/>"; echo ZLIB_SYNC_FLUSH; echo "<br/>"; echo ZLIB_FULL_FLUSH; echo "<br/>"; echo ZLIB_FINISH; echo "<br/>"; echo ZLIB_BLOCK; echo "<br/>"; echo PREG_JIT_STACKLIMIT_ERROR; echo "<br/>";
输出结果是:
-9223372036854775808 0 1 2 3 5 4 6