有什么理由或用例在php中使用self关键字而不是static关键字?

从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关键字的能力.德拉茨

上一篇:在初始化之外的Java中创建对象


下一篇:php-代码注释-应该注释使用的设计模式