ホームページ  >  記事  >  バックエンド開発  >  PHP の new self() と new static() の違い

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

coldplay.xixi
coldplay.xixi転載
2020-06-08 10:01:372544ブラウズ

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 までご連絡ください。