Heim >Backend-Entwicklung >PHP-Tutorial >Späte statische Bindung nach PHP OOP

Späte statische Bindung nach PHP OOP

*文
*文Original
2017-12-27 10:28:121444Durchsuche

In diesem Artikel wird hauptsächlich die poststatische Bindungsfunktion von PHP objektorientiert vorgestellt. 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. Ich hoffe, es hilft allen.

In diesem Artikel wird die späte statische PHP-Bindungsfunktion vorgestellt. Sie wird hauptsächlich verwendet, um das Problem der Referenzierung statisch aufgerufener Klassen im Vererbungsbereich zu lösen.

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, self:: in Zukunft nicht mehr zu verwenden, sondern static::

Verwandte Empfehlungen:

Objektorientierter PHP-Transaktionsskriptmodus

Objektorientierte PHP-Endklasse und Endmethode

PHP-objektorientierte Erklärung_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonSpäte statische Bindung nach PHP OOP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn