Verwenden Sie self:: oder __CLASS__, um einen statischen Verweis auf die aktuelle Klasse zu erstellen, abhängig von der Klasse, in der die aktuelle Methode definiert ist: Die Verwendung von static:: wird nicht mehr auf die Klasse analysiert, in der die aktuelle Methode definiert ist. sondern wird zur tatsächlichen Laufzeit berechnet. Es kann auch als „statische Bindung“ bezeichnet werden, da es für Aufrufe statischer Methoden verwendet werden kann (aber nicht darauf beschränkt ist).
Mir wurde kürzlich in den Kommentaren eines Videos eine kleine Frage gestellt: Gibt es besondere Überlegungen, wenn ich mich hier für die Verwendung von „Static“ anstelle von „Self“ entscheide? Oder wir können die Frage so ändern:
Was genau ist PHPs neues statisches und neues Selbst?
Tatsächlich sollte es sehr klar sein, wenn wir uns ein Beispiel ansehen:
class Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); } } class Son extends Father {} echo get_class(Son::getSelf()); // Father echo get_class(Son::getStatic()); // Son echo get_class(Father::getSelf()); // Father echo get_class(Father::getStatic()); // Father
Beachten Sie diese Zeile hierget_class(Son::getStatic());
gibt die Son
-Klasse zurück, die wie folgt zusammengefasst werden kann:
neues Selbst
1.self
gibt die Klasse zurück, in der sich das Schlüsselwort new self
in new
befindet. Im Beispiel hier:
public static function getSelf() { return new self(); // new 关键字在 Father 这里 }
gibt Father
zurück.
neue Statik
2.static
Basierend auf dem oben Gesagten ist es etwas intelligenter: static
gibt die Klasse zurück, die new static()
ausführt, z. B. Son
, die Was zurückgegeben wird, ist get_class(Son::getStatic())
, Son
führt Father
aus und was zurückgegeben wird, ist get_class(Father::getStatic())
Father
und new self
das gleiche Ergebnis zurückgeben. new static
Analyse des Unterschieds zwischen new self() und new static() in PHP
Die Verwendung von self und dies in PHP
dieses self in PHP Der Unterschied zwischen statisch
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von PHP New Static und New Self. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!