現在のメソッドが定義されているクラスに応じて、現在のクラスへの静的参照には self:: または __CLASS__ を使用します。static:: を使用すると、現在のメソッドが定義されているクラスに解決されなくなりますが、計算されます。実際の実行時。静的メソッドの呼び出し (ただし、それに限定されない) に使用できるため、「静的バインディング」とも呼ばれます。
最近、ビデオのコメントでちょっとした質問を受けました。ここで self の代わりに static を使用することを選択する場合、特別な考慮事項はありますか?あるいは、質問を次のように変更することもできます:
PHP における new static と new self とは何ですか?
実際、例を見てみると非常に明確になるはずです:
class Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); } } class Son extends Father {} echo get_class(Son::getSelf()); // Father echo get_class(Son::getStatic()); // Son echo get_class(Father::getSelf()); // Father echo get_class(Father::getStatic()); // Father
これに注目してください。ここの行 get_class(Son::getStatic());
はクラス Son
を返します。これは次のように要約できます: get_class(Son::getStatic());
返回的是 Son
这个 class,可以总结如下:
new self
1.self
返回的是 new self
中关键字 new
所在的类中,比如这里例子的 :
public static function getSelf() { return new self(); // new 关键字在 Father 这里 }
始终返回 Father
。
new static
2.static
则上面的基础上,更聪明一点点:static
会返回执行 new static()
的类,比如 Son
执行 get_class(Son::getStatic())
返回的是 Son
, Father
执行 get_class(Father::getStatic())
返回的是 Father
而在没有继承的情况下,可以认为 new self
和 new static
self
は、new self
のキーワード new
が配置されるクラスです。たとえば、次の例のようになります。 rrreee
は、常に お父さんコード>。 <br>
static
は上記に基づいて少し賢くなっています: static
は new static()
クラスを実行するために戻ります。たとえば、Son
は get_class(Son::getStatic())
を実行して Son
を返し、Father
は を実行します。 get_class(Father::getStatic()) は Father
を返します
上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。
PHP の new self() と new static() の違いの分析
php での self と this の使用
🎜🎜🎜🎜これでPHP 🎜 self🎜 static 🎜🎜🎜🎜🎜🎜🎜🎜🎜 の違い以上がPHPのnew staticとnew selfの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。