discuz插件php类常量的使用总结
discuz插件php类常量的使用总结:
- /**
- * PHP类常量
- *
- * 类常量属于类自身,不属于对象实例,不能通过对象实例访问
- * 不能用public,protected,private,static修饰
- * 子类可以重写父类中的常量,可以通过(parent::)来调用父类中的常量
- * 自PHP5.3.0起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如self,parent或static)。
- */
- class Foo{
- // 常量值只能是标量,string,bool,integer,float,null,可以用nowdoc结构来初始化常量
- const BAR = 'bar';
-
- public static function getConstantValue() {
- // 在类的内部可以用self或类名来访问自身的常量,外部需要用类名
- return self::BAR;
- }
-
- public function getConstant() {
- return self::BAR;
- }
-
- }
-
- $foo = 'Foo';
- echo $foo::BAR, '<br />';
- echo Foo::BAR, '<br />';
- $obj = new Foo();
- echo $obj->getConstant(), '<br />';
- echo $obj->getConstantValue(), '<br />';
- echo Foo::getConstantValue();
-
- // 以上均输出bar
-
- class Bar extends Foo{
- const BAR = 'foo'; // 重写父类常量
-
- public static function getMyConstant() {
- return self::BAR;
- }
-
- public static function getParentConstant() {
- return parent::BAR;
- }
- }
-
- echo Bar::getMyConstant(); // foo
- echo Bar::getParentConstant(); // bar