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(); // 小明
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(); // World
. 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!