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

PHP の new self() と new static() の違い

coldplay.xixi
リリース: 2023-04-08 19:02:01
転載
2686 人が閲覧しました

PHP の new self() と new static() の違い

PHP における new self() と new static() の違い

new static() は次のとおりです。 php5 .バージョン 3 で導入された新機能

new static と new self() はどちらも新しいオブジェクトです

コードを直接見てください

class Father
{
    public function getNewFather()
    {
        return new self();
    }
  
    public function getNewCaller()
    {
        return new static();
    }
}
  
$f = new Father();
  
var_dump(get_class($f->getNewFather())); // Father
var_dump(get_class($f->getNewCaller())); // Father
ログイン後にコピー

getNewFather と getNewCaller は両方とも Father this を返します実際の列

現時点では new self() と new static() に違いはないようです

次の例を見てください

class Sun1 extends Father{
  
}
  
$sun1 = new Sun1();
  
var_dump($sun1->getNewFather()); // object(Father)#4 (0) { }
var_dump($sun1->getNewCaller()); // object(Sun1)#4 (0) { }
ログイン後にコピー

getNewFather はFather の実列

getNewCaller は呼び出し元の実際の列を返します

それらの違いは継承にのみ反映されます。継承がない場合、2 つの間に違いはありません

new self() によって返される実際の列は変更されません。誰が呼び出しても、クラスの実際の列が返されます。

new static は呼び出し元によって決定されます。

推奨チュートリアル: 「PHP ビデオ チュートリアル

以上がPHP の new self() と new static() の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:liqingbo.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート