ホームページ >バックエンド開発 >PHPチュートリアル >php new self() と new static()、phpnewselfstatic_PHP チュートリアル

php new self() と new static()、phpnewselfstatic_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:56:31971ブラウズ

php new self() と new static()、phpnewselfstatic

<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><br /></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 を生成します

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1112811.html技術記事 php new self() と new static()、phpnewselfstatic クラス A { public static function get_self() { return new self() } public static function get_static() { return new static (); }
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。