再次,这在PHP 5.3.0之前是不可能的。
Late Static Binding在PHP 5.3.0中引入,允许您通过static关键字完成所需的操作。
class Super {
protected static $title = 'super';
public static function get_class_name()
{
echo __CLASS__;
}
public static function get_title()
{
echo static::$title;
}
}
class Sub extends Super {
protected static $title = 'sub';
}
get_class_name()仍然返回Super,尽管__CLASS__总是返回当前类,正在运行的方法被声明为(类似于__FILE__,它总是返回当前文件,无论是否包含它)。
因为你没有别的选择,只能在Sub类中重新声明该函数。
class Super {
protected static $title = 'super';
public static function get_class_name()
{
echo __CLASS__;
}
public static function get_title()
{
echo static::$title;
}
}
class Sub extends Super {
protected static $title = 'sub';
public static function get_class_name()
{
echo __CLASS__;
}
}