Maison > développement back-end > tutoriel php > Comment obtenir le nom de classe d'une classe étendue à partir d'un appel de méthode statique en PHP ?

Comment obtenir le nom de classe d'une classe étendue à partir d'un appel de méthode statique en PHP ?

Linda Hamilton
Libérer: 2024-10-31 21:29:29
original
1015 Les gens l'ont consulté

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

Récupération du nom de classe à partir d'un appel statique dans une classe PHP étendue

L'extension de classes en PHP permet la création de sous-classes qui héritent des propriétés et les méthodes de leur classe parent. Cependant, les méthodes statiques de la classe parent ne peuvent pas accéder directement au nom de classe de la classe étendue.

Problème :

Obtenir le nom de classe de la classe étendue lors de l'appel d'une méthode statique de cette classe.

Par exemple :

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

class MyAction extends Action {/* some methods here */}</code>
Copier après la connexion

L'appel de MyAction::n() devrait renvoyer "MyAction". Cependant, __CLASS__ dans la classe Action renvoie uniquement "Action".

Liaisons statiques tardives (PHP 5.3) :

Depuis PHP 5.3, les liaisons statiques tardives permettent de résoudre la cible classe pour les appels de méthodes statiques au moment de l’exécution. Utilisez get_call_class() pour récupérer le nom de classe :

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

class MyAction extends Action {

}

echo MyAction::n(); //displays MyAction</code>
Copier après la connexion

Alternative :

Si la méthode statique n'est pas statique, utilisez get_class($this) dans la méthode pour obtenir le nom de la classe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal