我在php.net上看到了这个例子:
<?php
class MyClass {
const MY_CONST = "yonder";
public function __construct() {
$c = get_class( $this );
echo $c::MY_CONST;
}
}
class ChildClass extends MyClass {
const MY_CONST = "bar";
}
$x = new ChildClass(); // prints 'bar'
$y = new MyClass(); // prints 'yonder'
?>
但是 $c::MY_CONST 只有在5.3.0版本或更高版本中才会被识别。我写的这个类可能会被广泛分发。
基本上,我已经在 ChildClass 中定义了一个常量,并且 MyClass(父类)中的一个函数需要使用该常量。有什么想法吗?
static
关键字访问const
会出现问题,你能解释一下为什么吗?PHP 文档也让我感到困惑。谢谢。 - pavlindromself::MY_CONST
在两种情况下都打印 "yonder"——它是在子类中定义的常量。问题是“如何从父类函数访问在子类中定义的常量”。 - pevikself::MY_CONST
基于 PHP 5.3.0 中引入的**后期静态绑定**(由 Dmitry、Etienne Kneuss 实现,已在 git 提交中添加了对后期静态绑定的支持)。核心实现在get_called_class()
函数中。在 PHP <= 5.2.x 的版本中,会出现错误提示:Parse error: syntax error, unexpected T_STATIC
。 - pevik