3

从 php 5.3 开始,该static关键字解决了后期静态绑定问题,并且可以像大多数其他 OO 语言一样使用self. 在 PHPself中仍然存在。

我知道这两个关键字在功能上是如何分开的,正如前面在这个问题中指出的那样:是否有任何理由使用 self 关键字?.

但是,我的问题是:任何人都可以说明您为什么要self在仅与 5.3 或更高版本的 PHP 一起运行的代码中使用的原因吗?self有更好的表现吗?我还没有找到任何令人信服的用例来使用该self关键字。我的理解是只允许旧图书馆以预期的方式继续工作。

问题的关键是任何人都可以提出一个好的理由,任何好的理由,只有一个,微小的,对于一个称职的 PHP 开发人员来说有意义的理由说“天啊,我真的应该使用 'self' 而不是 'static ’。”

因为您可能想在脚上开枪,这是使用它的一个理由,而不是一个好的理由。

4

1 回答 1

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关键字与静态属性一起使用的能力。德拉斯。

于 2012-09-17T20:51:01.813 回答