Der Unterschied zwischen new self() und new static() in PHP

coldplay.xixi
Freigeben: 2023-04-08 19:02:01
nach vorne
2651 Leute haben es durchsucht

Der Unterschied zwischen new self() und new static() in PHP

Der Unterschied zwischen new self() und new static() in PHP

new static() ist in php5 .In Version 3 eingeführte neue Funktionen

new static und new self() sind beide neue Objekte

Sehen Sie sich den Code direkt an

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
Nach dem Login kopieren

getNewFather und getNewCaller geben beide Father this zurück Echte Spalte

An dieser Stelle scheint es keinen Unterschied zwischen new self() und new static() zu geben

Dann schauen Sie sich das folgende Beispiel an

class Sun1 extends Father{
  
}
  
$sun1 = new Sun1();
  
var_dump($sun1->getNewFather()); // object(Father)#4 (0) { }
var_dump($sun1->getNewCaller()); // object(Sun1)#4 (0) { }
Nach dem Login kopieren

getNewFather gibt das zurück echte Spalte von Father ,

getNewCaller gibt die tatsächliche Spalte des Anrufers zurück

Ihre Differenz kann sich nur in der Vererbung widerspiegeln. Wenn es keine Vererbung gibt, gibt es keinen Unterschied zwischen den beiden

Die tatsächliche Spalte, die von new self() zurückgegeben wird, ändert sich nicht, egal wer sie aufruft, es wird eine tatsächliche Spalte einer Klasse zurückgegeben.

new static wird vom Aufrufer bestimmt.

Empfohlenes Tutorial: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen new self() und new static() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:liqingbo.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage