【发布时间】:2014-01-29 11:37:38
【问题描述】:
问题说明了一切。
我在父类中定义了常量。我试过$this->CONSTANT_1,但它不起作用。
class MyParentClass{
const CONSTANT_1=1
}
class MyChildClass extends MyParentClass{
//want to access CONSTANT_1
}
【问题讨论】:
-
试试 $my_child_class_instance::CONSTANT_1
-
你用
const定义了一个类常量,而不是一个使用define关键字的常量。因此,您的 类常量 属于该类,而不是该类的实例。从逻辑上讲,这就是$this->CONSTANT_1失败的原因。$this只能访问 instance 成员,并且您的类常量不属于该系列。您要使用的是self::而不是$this。 -
注意:如果您使用
Interface来集中定义类常量,则不能随后在子类中覆盖它们。 php.net/manual/en/language.oop5.interfaces.php -
@LauriElias 您的建议将不起作用,因为使用范围解析运算符 (
::) 对类级别成员的基本引用不得以美元符号进行。MyParentClass::,而不是$MyParentClass::;-) 在子类中使用self关键字是可行的方法,尤其是在 PHP 7.1+ 中,类常量可以具有可见性修饰符。 -
@AnthonyRutledge 除了你的死灵倾向之外,它确实有效:tehplayground.com/xEnBzy6fxprF4THw