Maison > développement back-end > tutoriel php > Comment récupérer le nom de la classe à partir d'un appel de méthode statique dans les classes PHP étendues ?

Comment récupérer le nom de la classe à partir d'un appel de méthode statique dans les classes PHP étendues ?

Mary-Kate Olsen
Libérer: 2024-10-30 21:53:30
original
929 Les gens l'ont consulté

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

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

Dans le monde de PHP, il est souvent nécessaire de déterminer le nom de classe à partir d'un nom statique appel de fonction, en particulier lorsque vous travaillez avec des classes étendues. Considérez le scénario suivant :

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

class MyAction extends Action {/* further implementation */}</code>
Copier après la connexion

Dans cette situation, appeler MyAction::n(); devrait renvoyer "MyAction" comme nom de classe. Cependant, la variable __CLASS__ renvoie uniquement le nom de la classe parent ("Action").

Liaisons statiques tardives (PHP 5.3) :

PHP 5.3 a introduit les liaisons statiques tardives, qui permettent de résoudre la classe cible au moment de l’exécution. Cette fonctionnalité permet de déterminer la classe appelée à l'aide de la fonction get_call_class() :

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

class MyAction extends Action {

}

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

Approche alternative (Pré-PHP 5.3) :

Avant PHP 5.3, une solution alternative repose sur l'utilisation d'une méthode non statique et de la fonction 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>
Copier après la connexion

N'oubliez pas que cette approche ne fonctionne que pour les méthodes non statiques, car la fonction get_class() prend une instance de la classe comme argument.

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