«
php类中const常量

时间:2021-12-28    作者:范文泉    分类: 编程


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))

我们知道,在PHP中定义常量是通过define()函数来完成的,但在类中定义常量不能使用define(),而需要使用const修饰符。类中的常量使用const定义后,其访问方式和静态成员类似,都是通过类名或在成员方法中使用self访问,但在PHP 5.3.0之后也可以使用对象来访问。被const定义的常量不能重新赋值,如果在程序中试图改变它的值将会出现错误。

<?php
     class MyClass {
          const CONSTANT = 'CONSTANT value' ; //使用const声明一个常量,并直接赋上初使值
             function showConstant() {               
                  echo  self ::CONSTANT ."<br>" ;//使用self访问常量,注意常量前不要加“$”
             }
     }
     echo MyClass:: CONSTANT . "<br>" ; //在类外部使用类名称访问常量,也不要加”$”
     $class = new MyClass();                     
     $class->showConstant();                      
     echo $class ::CONSTANT;  // PHP 5.3.0之后
?>

关注细节:使用const定义的常量名称前不需要使用“$“符号,且常量名称通常都是大写的。

试图为const定义的常量赋值,将会出现错误。

<?php
     class MyClass {
          const CONSTANT = 'CONSTANT value' ;  
              function setCONSTANT(){
               self ::CONSTANT  = 'news CONSTANT' ;//程序运行结果将会出错。
      }

     }
     echo MyClass:: CONSTANT ;          

?>

程序运行结果将会出错。

标签: php