php new selfとnew static

WBOY
WBOYオリジナル
2016-07-29 08:57:01949ブラウズ

<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 チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。