Heim > Backend-Entwicklung > PHP-Tutorial > Wie rufe ich den Klassennamen aus einem statischen Methodenaufruf in erweiterten PHP-Klassen ab?

Wie rufe ich den Klassennamen aus einem statischen Methodenaufruf in erweiterten PHP-Klassen ab?

Mary-Kate Olsen
Freigeben: 2024-10-30 21:53:30
Original
930 Leute haben es durchsucht

How to retrieve the class name from a static method call in extended PHP classes?

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

In der Welt von PHP ist es oft notwendig, den Klassennamen aus einem statischen Aufruf zu ermitteln Funktionsaufruf, insbesondere bei der Arbeit mit erweiterten Klassen. Stellen Sie sich das folgende Szenario vor:

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

class MyAction extends Action {/* further implementation */}</code>
Nach dem Login kopieren

In dieser Situation wird beim Aufruf von MyAction::n(); sollte „MyAction“ als Klassennamen zurückgeben. Die Variable __CLASS__ gibt jedoch nur den Namen der übergeordneten Klasse („Aktion“) zurück.

Späte statische Bindungen (PHP 5.3):

PHP 5.3 führte späte statische Bindungen ein. die das Auflösen der Zielklasse zur Laufzeit ermöglichen. Diese Funktion ermöglicht es, die aufgerufene Klasse mithilfe der Funktion get_claimed_class() zu ermitteln:

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

class MyAction extends Action {

}

echo MyAction::n(); // Output: MyAction</code>
Nach dem Login kopieren

Alternativer Ansatz (vor PHP 5.3):

Vor PHP 5.3 basiert eine alternative Lösung auf der Verwendung einer nicht statischen Methode und der Funktion get_class():

<code class="php">class Action {
    public function n(){
        return get_class($this);
    }
}

class MyAction extends Action {

}

$foo = new MyAction;

echo $foo->n(); // Output: MyAction</code>
Nach dem Login kopieren

Beachten Sie, dass dieser Ansatz nur für nicht statische Methoden funktioniert, da die Funktion get_class() eine Instanz benötigt der Klasse als Argument.

Das obige ist der detaillierte Inhalt vonWie rufe ich den Klassennamen aus einem statischen Methodenaufruf in erweiterten PHP-Klassen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage