Maison  >  Article  >  développement back-end  >  Le principe de la réflexion php

Le principe de la réflexion php

(*-*)浩
(*-*)浩original
2019-09-03 13:51:473189parcourir

Le principe de la réflexion php

Qu'est-ce que la réflexion ?

Les objets de la programmation orientée objet PHP ont la capacité de s'introspecter par le système, et ce processus d'introspection est appelé réflexion.

Notre compréhension intuitive de la réflexion peut être un processus de recherche du point de départ et de la source en fonction du point d'arrivée. En termes simples, je vais vous donner un objet nu, et vous pouvez le connaître en fonction de cet objet. La classe à laquelle il appartient et les méthodes dont il dispose.

En PHP, la réflexion fait référence à l'extension de l'analyse des programmes PHP dans l'état d'exécution de PHP, à l'exportation ou à l'extraction d'informations détaillées sur les classes, les attributs, les méthodes, les paramètres, etc., y compris les commentaires. Cette fonction d'obtention dynamique d'informations et d'appel dynamique de méthodes objet est appelée API de réflexion.

Expérimentons-le à travers un morceau de code :

class person{
    public $name;
    public $age;
 
    public function say()
    {
        echo $this->name."<br>".$this->age;
    }
 
    public function set($name,$value)
    {
        echo &#39;set name to value&#39;;
        $this->$name = $value;
    }
 
    public function get($name)
    {
        if(!isset($this->$name)){
            echo &#39;unset name&#39;;
            $this->$name = &#39;seting~~~&#39;;
        }
 
        return $this->$name;
    }
}
 
$stu = new person();
$stu->name = &#39;luyaran&#39;;
$stu->age = 26;
$stu->sex = &#39;girl&#39;;

Le code ci-dessus est une classe simple. Nous l'instancions et attribuons des valeurs, laissons-le avoir un sens. .

Après cela, obtenons une liste des méthodes et des attributs de cet objet stu via l'API de réflexion :

//获取对象的属性列表
$reflect = new ReflectionObject($stu);
$props = $reflect->getProperties();
foreach ($props as $key_p => $value_p) {
    var_dump($value_p->getName());
}
//获取对象的方法列表
$method = $reflect->getMethods();
foreach ($method as $key_m => $value_m) {
    var_dump($value_m->getName());
}

En même temps, la réflexion peut être utilisée non seulement pour les classes et les objets, mais également pour les fonctions, modules d'extension, exceptions, etc.

Quant à nous, nous n’entrerons pas ici dans les détails. Dans le dernier espace, parlons de quelques fonctions de la réflexion.

Tout d'abord, il peut être utilisé comme génération de document, nous pouvons donc l'utiliser pour numériser les classes du document et générer des documents numérisés un par un.

Reflection peut détecter la structure interne d'une classe, peut également être utilisé comme hook pour implémenter des fonctions de plug-in et peut également être utilisé comme proxy dynamique.

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!

Déclaration:
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