任何<good>原因或用例在php中使用self关键字而不是static keyword?</good>

时间:2012-09-17 18:11:12

标签: php oop

从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'代替'静态'。“

因为你可能想要用脚射击自己,这是一个使用它的理由并不是一个好理由。

1 个答案:

答案 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。