Späte statische Bindung nach PHP OOP

*文
Freigeben: 2023-03-18 15:40:02
Original
1381 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!