Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung von PHP New Static und New Self

Detaillierte Erklärung von PHP New Static und New Self

墨辰丷
墨辰丷Original
2018-05-25 11:14:441252Durchsuche

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

. In Ermangelung einer Vererbung kann davon ausgegangen werden, dass

und new self das gleiche Ergebnis zurückgeben. new static

Tipps: Sie können eine gute IDE verwenden, um Kommentare direkt zu lesen. Zum Beispiel PhpStorm:

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird.


Verwandte Empfehlungen:

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!

Stellungnahme:
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