ホームページ >バックエンド開発 >PHPチュートリアル >php new self() と new static()、phpnewselfstatic_PHP チュートリアル
<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 を生成します