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
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) { }
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!