Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung der verzögerten statischen Bindung von PHP
In der alten Version von PHP wird return new self() verwendet, um eine Instanz dieser Klasse zurückzugeben. Diese Methode hat jedoch einen großen Nachteil: self bezieht sich auf den Parsing-Kontext und nicht auf den aufrufenden Kontext. Dieser Artikel enthält hauptsächlich eine detaillierte Erklärung der verzögerten statischen PHP-Bindung. Ich hoffe, er kann Ihnen helfen.
abstract class father { public static function create() { return new self(); } } class son1 extends father { } son1::create();
Das heißt, die Unterklasse, die im obigen Code die Methode create() aufruft, gibt tatsächlich eine Instanz der übergeordneten Klasse zurück, da self auf den Ort verweist, an dem sie sich befindet definiert und nicht an der Stelle, an der sie aufgerufen wird. Und die Vaterklasse ist eine abstrakte Klasse. Dieser Code meldet einen schwerwiegenden Fehler.
Verzögerte statische Bindung wurde nach PHP5.3 unter Verwendung des Schlüsselworts static eingeführt. <code> <br>
abstract class father { public static function create() { return new static(); } } class son1 extends father { } son1::create();
Das Ändern von self in static kann normal ausgeführt werden, da static auf die aufgerufene Klasse und nicht auf die definierte Klasse verweist.
Wir können static auch als Bezeichner einer statischen Methode verwenden, selbst wenn sie aus einem nicht statischen Kontext aufgerufen wird. Ich werde später darüber schreiben.
Verwandte Empfehlungen:
PHP-Implementierung der späten statischen Bindung
Detaillierte Erläuterung der Beispiele für die späte statische PHP-Bindung
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der verzögerten statischen Bindung von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!