Heim >Backend-Entwicklung >PHP-Tutorial >Wie erhalte ich den Klassennamen einer erweiterten Klasse aus einem statischen Methodenaufruf in PHP?

Wie erhalte ich den Klassennamen einer erweiterten Klasse aus einem statischen Methodenaufruf in PHP?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 21:29:291019Durchsuche

How to Get the Classname of an Extended Class from a Static Method Call in PHP?

Abrufen des Klassennamens aus einem statischen Aufruf in einer erweiterten PHP-Klasse

Das Erweitern von Klassen in PHP ermöglicht die Erstellung von Unterklassen, die die Eigenschaften erben und Methoden ihrer Elternklasse. Statische Methoden in der übergeordneten Klasse können jedoch nicht direkt auf den Klassennamen der erweiterten Klasse zugreifen.

Problem:

Erhalten Sie den Klassennamen der erweiterten Klasse, wenn Sie eine statische Methode aufrufen aus dieser Klasse.

Zum Beispiel:

<code class="php">class Action {
    function n() {/* something */}
}

class MyAction extends Action {/* some methods here */}</code>

Der Aufruf von MyAction::n() sollte „MyAction“ zurückgeben. Allerdings gibt __CLASS__ in der Action-Klasse nur „Action“ zurück.

Späte statische Bindungen (PHP 5.3):

Seit PHP 5.3 ermöglichen späte statische Bindungen das Auflösen des Ziels Klasse für statische Methodenaufrufe zur Laufzeit. Verwenden Sie get_claimed_class(), um den Klassennamen abzurufen:

<code class="php">class Action {
    public static function n() {
        return get_called_class();
    }
}

class MyAction extends Action {

}

echo MyAction::n(); //displays MyAction</code>

Alternativ:

Wenn die statische Methode nicht statisch ist, verwenden Sie get_class($this) in der Methode zu Erhalten Sie den Klassennamen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich den Klassennamen einer erweiterten Klasse aus einem statischen Methodenaufruf in PHP?. 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