Heim > Artikel > Backend-Entwicklung > Der Unterschied in der Verwendung dieser Selbststatik in PHP
In diesem Artikel wird hauptsächlich der Unterschied zwischen dieser Selbststatik in PHP vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf.
Ich habe kürzlich einen Software-Engineering-Kurs entworfen und bin auf ein Problem gestoßen, um den Laravel-Quellcode auszugraben und erneut zu suchen. und stellte fest, dass es sich um eine Selbststatik handelte. Probleme entstehen aufgrund mangelnden Verständnisses, also notieren Sie sie, um zu vermeiden, dass dieselben Fehler noch einmal gemacht werden.
das ist leichter zu verstehen. Es zeigt auf das aktuelle Objekt und wird verwendet, um auf die nicht statischen Variablen und nicht statischen Methoden des aktuellen Objekts zuzugreifen Objekt. Es bezieht sich auf das Objekt. ;
<?php class Person { public $name; public function getName() { echo $this->name; } } $p = new Person(); $p2 = new Person(); $p->name = "小红"; $p2->name = "小明"; $p->getName(); // 小红 $p2->getName(); // 小明
Im obigen Beispiel sind zwei Objekte neu und die Namensattribute der Objekte werden jeweils in getName() verwendet, um auf den Namen zuzugreifen Attribut des aktuellen Objekts, daher werden jeweils die Namenswerte ausgegeben. Daher verweist dies auf das aktuelle Objekt und nicht auf andere Objekte oder Klassen.
self verweist auf die Klasse selbst und nicht auf ein instanziiertes Objekt. Es wird im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden in der Klasse verwendet 🎜>
<?php class Person { public static $name = "小红"; public static function getName() { echo self::$name; } } $p = new Person(); $p2 = new Person(); $p::getName(); // 小红 $p2::getName(); // 小红 $p::$name = "小明"; $p::getName(); // 小明 $p2::getName(); // 小明Im obigen Beispiel sind zwei Objekte neu und der Namensattributwert des anderen Objekts wird ebenfalls geändert. Daher zeigt self auf die aktuelle Klasse hat nichts mit dem Objekt zu tun. Es ist ein gemeinsamer Wert für alle Objekte. statischstatisch ist dasselbe wie self, beide verweisen auf die Klasse und werden im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden in der Klasse verwendet, es gibt jedoch einige Unterschiede, insbesondere: self In welcher Klasse wird diese Klasse tatsächlich aufgerufen? Static wird dann über die Unterklasse verwendet, die offiziell als
späte statische Bindung bezeichnet wird .
Wie Sie dem obigen Beispiel entnehmen können, ist self in Klasse A geschrieben und zeigt beim Aufruf auf Klasse A. static ist ebenfalls in Klasse A geschrieben, verwendet jedoch ein Objekt der Klasse B , eine Unterklasse der Klasse A. Beim Aufruf zeigt es auf Klasse B. Bei Verwendung bestimmt static, auf welche Klasse es zeigt. Dies ist eine<?phpclass A { public function say() { echo "Hello"; } public function saySelf() { self::say(); } public function sayStatic() { static::say(); } } class B extends A { public function say() { echo "World"; } } $b = new B(); $b->say(); // World $b->saySelf(); // Hello $b->sayStatic(); // Worldspäte statische Bindung
. Späte statische Bindung
Zusammenfassung
static zeigt auf die Klasse und wird im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden verwendet die aktuelle Klasse,
ist jedoch nicht auf
beschränkt. Ein statischer Aufruf bestimmt, auf welche Klasse zur Laufzeit verwiesen wird.
Das obige ist der detaillierte Inhalt vonDer Unterschied in der Verwendung dieser Selbststatik in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!