3

PHP 5.3 の時点で、staticキーワードは後期静的バインディングの問題を解決し、他のほとんどの OO 言語が使用するように使用できますself。PHPselfにはまだ存在します。

この質問で以前に指摘したように、2 つのキーワードが機能的にどのように分離されているかを知っています:自己キーワードを使用する理由はありますか? .

selfただし、私の質問は次のとおりです。5.3 以降の PHP でのみ実行することを意図したコードで使用したい理由を誰か教えてください。selfより良いパフォーマンスがありますか?selfキーワードを使用するための説得力のあるユースケースをまだ見つけていません。私の理解では、古いライブラリが期待どおりに動作し続けることを許可するだけです。

質問の鍵は、有能なPHP開発者が「ええ、ここでは本当に「静的」ではなく「自己」を使用する必要があると言うのに理にかなっている、ほんのわずかな、ほんのわずかな理由で、正当な理由、任意の正当な理由を誰かが提案できるかということです。 '."

あなたは自分の足を撃ちたいと思うかもしれませんが、それは正当な理由ではありません。

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....

したがって、それが変更されるか、PHP が静的プロパティでキーワードselfを使用する機能を追加するまで、今のところは足を引きずっていると思い ます。finalドラッツ。

于 2012-09-17T20:51:01.813 に答える