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
2017-02-21 15:29:431200Durchsuche

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, dass diese Zeile hier get_class(Son::getStatic()); die Klasse Son zurückgibt, 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. In diesem Beispiel beispielsweise:

public static function getSelf() {
  return new self(); // new 关键字在 Father 这里
 }

gibt immer 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:

PHP new static 和 new self详解

Ausführlichere Artikel zu PHP New Static und New Self finden Sie auf der chinesischen PHP-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