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