Récupération du nom de classe à partir de l'appel statique dans une classe php étendue
dans le monde de PHP, il est souvent nécessaire de déterminer le nom de classe d'un appel de fonction statique, en particulier lorsque vous travaillez avec des classes étendues. Considérez le scénario suivant:
class Action {
function n() {/* some implementation */}
}
class MyAction extends Action {/* further implementation */}
Dans cette situation, appelant myAction :: n (); devrait retourner "myAction" comme nom de classe. Cependant, la variable __class__ renvoie uniquement le nom de la classe parent ("Action").
Bindings statiques tardifs (php 5.3):
php 5.3 a introduit des liaisons statiques tardives, qui permettent de résoudre la classe cible à l'exécution. Cette fonctionnalité permet de déterminer la classe appelée à l'aide de la fonction get_called_class ():
class Action {
public static function n() {
return get_called_class();
}
}
class MyAction extends Action {
}
echo MyAction::n(); // Output: MyAction
approche alternative (pre-php 5.3):
avant php 5.3, une solution alternative repose sur une méthode non statique et la fonction get_class ():
class Action {
public function n(){
return get_class($this);
}
}
class MyAction extends Action {
}
$foo = new MyAction;
echo $foo->n(); // Output: MyAction
rappelez-vous, cette approche ne fonctionne que pour les méthodes non statiques, car la fonction get_class () prend une instance de la classe comme argument.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3