Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen new self() und new static() in PHP

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

coldplay.xixi
coldplay.xixinach vorne
2020-06-08 10:01:372648Durchsuche

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:liqingbo.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen