ホームページ >バックエンド開発 >PHPチュートリアル >php new selfとnew static
<span>class</span><span> A { </span><span>public</span><span>static</span><span>function</span><span> get_self() { </span><span>return</span><span>new</span><span> self(); } </span><span>public</span><span>static</span><span>function</span><span> get_static() { </span><span>return</span><span>new</span><span>static</span><span>(); } } </span><span>class</span> B <span>extends</span><span> A {} </span><span>echo</span><span>get_class</span>(B::get_self()); <span>//</span><span> A</span><span>echo</span><span>get_class</span>(B::get_static()); <span>//</span><span> B</span><span>echo</span><span>get_class</span>(A::get_static()); <span>//</span><span> A</span>
self は、呼び出しコンテキストではなく、解析コンテキストを参照します。この例では、self は、self を呼び出す B ではなく、get_self() を定義する A に解決されます。
php5.3 では、遅延静的バインディングの概念が導入されました。この機能の最も明白なシンボルは、新しいキーワード static です。 static は呼び出されるクラスを指します。この例では、B::get_static() は A をインスタンス化する代わりに新しい B を生成します
上記では、php new self と new static を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。