从php 5.3开始,static关键字解决了后期的静态绑定问题,可以像大多数其他OO语言使用self一样使用它.在PHP中自我仍然存在.
我知道两个关键字在功能上是如何分开的,如之前在此问题中指出的:Is there any reason to use the self keyword?.
但是,我的问题是:谁能给出一个原因,说明为什么您希望在仅可与5.3或更高版本的PHP一起运行的代码中使用self?自我有更好的表现吗?我还没有找到任何使用self关键字的引人注目的用例.我的理解是,仍然只有允许旧图书馆以预期的方式继续工作.
问题的关键在于,有人能提出一个很好的理由吗,任何好的原因,只有一个,微小,小的理由,对于有能力的PHP开发人员说“ Gee,在这里,我应该真正使用“自我”而不是“静态” ‘.”
因为您可能想用脚开枪射击,所以使用它并不是一个好理由.
解决方法:
啊!找到了我的一个很好的理由.目前在php 5.3中,您无法使用静态访问编译时间常数.
下面的代码将引发错误
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关键字的能力.德拉茨