Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

L'API de réflexivité en PHP

Article posté le 04-01-2014 dans la catégorie PHP

En PHP, l'API de réflexivité est un ensemble d'outils vous permettant de d'obtenir des informations sur les classes que vous utilisez, notamment sur leurs méthodes et attributs.

Rapidement, il existe 4 outils principaux : ReflectionClass, ReflectionObject ReflectionProperty et ReflectionMethod

Elles servent respectivement à fournir des informations sur la classe, sur ses attributs, sur ses méthodes. Bien qu'ils disposent de plusieurs fonctions pour obtenir des détails sur les éléments civles, voici quelques exemples.

Exemple d'utilisation de l'API de réflexivité:

RefectionClass permet d'obtenir des informations sur la classe. Imaginons que nous ayons une classe appelée "classeA" qui contienne une méthode intitulée "maFonction"; L'utilisation de ce code :

$a = new classeA();
$maClasseA = new ReflectionClass('classeA');
$Toto = $maClasseA->getMethods();
echo $Toto[0];

vas nous afficher la première méthode contenue dans la classe :

Method [ public method maFonction ] { @@ C:\wampa\www\Test\index.php 48 - 53 }

Il est aussi possible d'obtenir des informations sur l'instance de la classe, avec ReflectionObject :

$a = new classeA();
$maClasseA = new ReflectionObject($a);
$Toto = $maClasseA->getMethods();
echo $Toto[0];

Affichera la même chose que précédemment.

Certaines méthodes peuvent retourner des booléens, comme :

hasProperty('nomDeLaVariableAttribut')) //Vérifie l'existence de tel attribut

ou retourner une information :

getParentClass()) // retourne le nom d'une éventuelle classe mère

 

ReflectionProperty et ReflectionMethod fonctionnent sur le même principe. 

Utilisation : retourner le contenu des attributs de l'objet sous forme de tableau

public function toArray() {
        if ($this->dataArray == null) {
            $this->dataArray = array();
            
            $myReflection = new ReflectionClass($this);
            $theVars = $myReflection->getProperties();
            
            foreach ($theVars as $value) {
                $getter = "get" . $value->name;
                $this->dataArray[$value->name] = $this->$getter();
            }
        }
        return $this->dataArray;
    }

Cet article vous a plu? Découvrez d'autres articles


Tweet
comments powered by Disqus