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