Heim >Backend-Entwicklung >PHP-Tutorial >Der Unterschied zwischen dieser Selbststatik in PHP
Dieser Artikel stellt hauptsächlich den Unterschied zwischen dieser Selbststatik in PHP vor, der einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn brauchen.
Nachdruck von: https: / /blog.csdn.net/mrzhouxiaofei/article/details/78648079
Ich habe kürzlich einen Software-Engineering-Kurs entworfen und bin auf ein Problem gestoßen. Ich habe den Laravel-Quellcode ausgegraben und erneut gesucht. Dabei stellte ich fest, dass das Problem auf mangelndes tiefes Verständnis der Selbststatik zurückzuführen war. Deshalb habe ich es aufgezeichnet, um zu vermeiden, dass derselbe Fehler noch einmal gemacht wird.
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. ;
<?phpclass 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 🎜>
<?phpclass 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. Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen dieser Selbststatik in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!