const变量经常被当做常量用在php的类中,隐含的意思是这个变量是常量,不能被修改。编译器会自动检测,如果被赋值会被提示错误警告。
正确实例1:
<?php class test {const ERRNO = 100; } echo test::ERRNO."\n";
输出:
100
错误示范1:const常量被赋值,编译器提示错误
<?php class test {const ERRNO = 100; } test::ERRNO = 10; echo test::ERRNO."\n";
输出:
PHP Parse error: syntax error, unexpected '='
错误示范2:const常量被当做变量来定义
<?php class test {const $ERRNO = 100; }
输出:
PHP Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING
错误示范3:const常量被赋值为数组型
<?php class test {const ERRNO = array(100); }
输出:
PHP Fatal error: Arrays are not allowed in class constants
至于为什么const常量不能被定义为array数组型?
php官方文档给出的解释是,尽管这有可能实现,但会产生一些未知的风险和结果,所以不推荐。支持的类型为标量类型(scalar data:(boolean, integer, float and string))
更多细节参考:http://www.php.net/manual/en/language.constants.syntax.php