Heim >Backend-Entwicklung >PHP-Tutorial >Einführung in die späte statische Bindungsfunktion von PHP objektorientiert
In diesem Artikel wird die späte statische Bindungsfunktion von PHP vorgestellt, die hauptsächlich zur Lösung des Problems der Referenzierung statisch aufgerufener Klassen im Vererbungsbereich verwendet wird.
Sehen Sie sich zunächst das folgende Beispiel an:
class Person { public static function status() { self::getStatus(); } protected static function getStatus() { echo "Person is alive"; } } class Deceased extends Person { protected static function getStatus() { echo "Person is deceased"; } } Deceased::status(); //Person is alive
Offensichtlich ist das Ergebnis nicht das, was wir erwartet haben. Dies liegt daran, dass self:: von der Klasse abhängt, in der es definiert ist, nicht von der Laufklasse Art. Um dieses Problem zu lösen, können Sie die Methode status() in der geerbten Klasse überschreiben. Eine bessere Lösung besteht darin, dass PHP 5.3 die Funktion der späten statischen Bindung hinzugefügt hat.
class Person { public static function status() { static::getStatus(); } protected static function getStatus() { echo "Person is alive"; } } class Deceased extends Person { protected static function getStatus() { echo "Person is deceased"; } } Deceased::status(); //Person is deceased
Es ist ersichtlich, dass static:: nicht mehr auf die aktuelle Klasse verweist. Tatsächlich wird es zur Laufzeit berechnet, wodurch alle Eigenschaften der endgültigen Klasse abgerufen werden müssen.
Daher wird empfohlen, in Zukunft nicht self:: zu verwenden und static:: zu verwenden.
Weitere Artikel zur Einführung der objektorientierten poststatischen Bindungsfunktion von PHP Bitte achten Sie auf die chinesische PHP-Website!