去评论
dz插件网

discuz插件php类常量的使用总结

admin
2021/01/17 17:06:59
discuz插件php类常量的使用总结:
  1. /**
  2. * PHP类常量
  3. *
  4. * 类常量属于类自身,不属于对象实例,不能通过对象实例访问
  5. * 不能用public,protected,private,static修饰
  6. * 子类可以重写父类中的常量,可以通过(parent::)来调用父类中的常量
  7. * 自PHP5.3.0起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如self,parent或static)。
  8. */
  9. class Foo{
  10.     // 常量值只能是标量,string,bool,integer,float,null,可以用nowdoc结构来初始化常量
  11.     const BAR = 'bar';

  12.     public static function getConstantValue()    {
  13.         // 在类的内部可以用self或类名来访问自身的常量,外部需要用类名
  14.         return self::BAR;
  15.     }

  16.     public function getConstant()    {
  17.         return self::BAR;
  18.     }

  19. }

  20. $foo = 'Foo';
  21. echo $foo::BAR, '<br />';
  22. echo Foo::BAR, '<br />';
  23. $obj = new Foo();
  24. echo $obj->getConstant(), '<br />';
  25. echo $obj->getConstantValue(), '<br />';
  26. echo Foo::getConstantValue();

  27. // 以上均输出bar

  28. class Bar extends Foo{
  29.     const BAR = 'foo'; // 重写父类常量

  30.     public static function getMyConstant()    {
  31.         return self::BAR;
  32.     }

  33.     public static function getParentConstant()    {
  34.         return parent::BAR;
  35.     }
  36. }

  37. echo Bar::getMyConstant(); // foo
  38. echo Bar::getParentConstant(); // bar