Heim >Backend-Entwicklung >PHP-Tutorial >Kann ich den korrekten Klassennamen aus einem statischen Methodenaufruf in einer erweiterten PHP-Klasse abrufen?

Kann ich den korrekten Klassennamen aus einem statischen Methodenaufruf in einer erweiterten PHP-Klasse abrufen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 15:57:30928Durchsuche

Can I retrieve the correct class name from a static method call in an extended PHP class?

Klassennamen aus statischen Aufrufen in erweiterten PHP-Klassen abrufen

Problem:

Ein PHP Es existiert eine Klassenhierarchie mit einer Basisklasse Action und einer erweiterten Klasse MyAction. Eine statische Methode n() in der Action-Klasse gibt ihren Klassennamen zurück. Wenn die Methode jedoch von der erweiterten Klasse MyAction aufgerufen wird, gibt sie „Action“ zurück.

Frage:

Ist es möglich, den richtigen Klassennamen von a abzurufen? statischer Aufruf in der erweiterten Klasse?

Antwort:

Option 1: Nichtstatische Methode

Wenn die Methode ist so geändert, dass sie nicht statisch ist und stattdessen das Schlüsselwort $this verwendet, kann die Funktion get_class($this) verwendet werden, um den Klassennamen der erweiterten Klasse abzurufen.

Option 2: Late Static Bindings ( PHP 5.3 )

Späte statische Bindungen führen die Funktion get_claimed_class() ein, die die Laufzeitzielklasse für statische Methodenaufrufe auflöst. Dies ermöglicht den Abruf des Klassennamens direkt innerhalb der Methode.

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