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>
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>
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>
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!