所以这是我的班级宣言
abstract class person {
const NAME='person';
public static function get_name(){
return self::NAME;
}
abstract public function get_description();
}
class me extends person{
const NAME = "me";
public function get_description(){
return "this describe " . self::NAME;
}
}
正如您所看到的,const类名在我和Classes人员中都被声明了两次。 我在类“person”中声明它,因为它是我们在方法get_name()的实现中使用它的地方 我也在班级“我”中宣布它,因为我希望得到“我”的名字。
所以当我打电话时
echo me::get_name()
我希望它返回“我”
实际上它返回“人”所以我在这里失踪所以它会返回“我”。
由于
答案 0 :(得分:1)
将您的抽象方法更改为:
abstract class person {
public static function get_name(){
return static::NAME;
}
}
这将在PHP中使用后期静态绑定,如文档中所述: http://php.net/manual/en/language.oop5.late-static-bindings.php