从php 5.3开始,static
关键字解决了后期静态绑定问题,并且可以像大多数其他OO语言一样使用self
。在PHP self
中仍然存在。
我知道这两个关键字在功能上是如何分开的,正如之前在这个问题中指出的那样:Is there any reason to use the self keyword?。
然而,我的问题是:任何人都可以说明为什么你想在代码中使用self
只能运行5.3或更高版本的PHP? self
有更好的表现吗?我还没有找到任何令人信服的用例来再使用self
关键字。我的理解是,只允许旧图书馆以预期的方式继续工作。
这个问题的关键是任何人都可以提出一个很好的理由,一个很好的理由,只有一个小小的理由让一个有能力的PHP开发人员说“Gee,这里我应该真的使用'self'代替'静态'。“
因为你可能想要用脚射击自己,这是一个使用它的理由并不是一个好理由。
答案 0 :(得分:3)
啊!找到我的一个很好的理由。目前在php 5.3中,您无法使用static
访问编译时常量。
下面的代码会抛出错误
class Foo{
const BAR = "FREE BEER";
public static function whatDoWeLove(){
return static::BAR;
}
}
echo Foo::whatDoWeLove();
我得到的错误是:
PHP Fatal error: "static::" is not allowed in compile-time constants in....
所以,我想现在self
一直在变化,或者PHP增加了将final
关键字与静态属性一起使用的能力。 Drats。