Cet article présente principalement la connaissance du contenu de réflexion de PHP. Nous fournissons ici des informations pertinentes et un exemple de code simple pour votre référence. Les amis intéressés peuvent s'y référer
Récemment, je regarde des idées de programmation Java. Dans le chapitre sur les informations de type, nous parlons des informations de classe et du concept de réflexion. Au fait, passons en revue les outils de réflexion de php. Le manuel dit ceci : « PHP 5 dispose d'une API de réflexion complète, ajoutant la possibilité de procéder à une ingénierie inverse des classes, des interfaces, des fonctions, des méthodes et des extensions. De plus, l'API de réflexion fournit des méthodes pour supprimer des fonctions, des classes et des méthodes. Commentaire de la documentation. "Bien sûr, le manuel est un peu abstrait ! Ce qu'on appelle l'ingénierie inverse signifie que vous pouvez obtenir des informations détaillées sur les classes, les méthodes, les propriétés, les paramètres, etc., y compris les commentaires. Le texte est toujours aussi ennuyeux, par exemple
class Foo { public $foo = 1; protected $bar = 2; private $baz = 3; /** * Enter description here ... */ public function myMethod() { echo 'hello 2b'; } } $ref = new ReflectionClass('Foo'); $props = $ref->getProperties(); foreach ($props as $value) { echo $value->getName()."\n"; } //output //foo //bar //baz
ReflectionClass Cette classe renvoie des informations relatives à une certaine classe, telles que les attributs, les méthodes, les espaces de noms, les interfaces implémentées, etc. ! Dans l’exemple précédent, ReflectionClass::getProperties a renvoyé un tableau d’objets ReflectionProperty. La classe
ReflectionProperty rapporte des informations sur les propriétés de la classe. Par exemple, isDefault isPrivate isProtected isPublic isStatic, etc., la méthode getName consiste à obtenir le nom de l'attribut !
Les éléments ci-dessus sont utilisés pour obtenir des attributs, et il existe également des méthodes pour obtenir des méthodes de classe telles queclass Foo { public $foo = 1; protected $bar = 2; private $baz = 3; /** * Enter description here ... */ public function myMethod() { echo 'hello 2b'; } } $ref = new ReflectionClass('Foo'); $method = $ref->getMethod('myMethod'); $method->invoke($ref->newInstance());
ReflectionClass::getMethod C'est un type ReflectionMethod. La classe ReflectionMethod rapporte des informations sur une méthode, telle que isAbstract isPrivate isProtected isPublic isStatic isConstructor, et il existe également une méthode importante Invoke, InvokeArgs est la méthode d'exécution !
Pour les autres objets, vous pouvez lire le manuel, ce n'est pas difficile ! A quoi sert la réflexion ? La réflexion est un concept exécuté de manière dynamique, utilisés ensemble, ils peuvent être utilisés pour nous aider à analyser d'autres classes, interfaces, méthodes, propriétés, méthodes et extensions. Des modèles peuvent également être créés, tels que des proxys dynamiques. Il est également très courant d'utiliser la réflexion dans certains frameworks PHP, tels que kohana et yii. Voici le code de kohana pour implémenter mvc, qui utilise la réflexion !// Start validation of the controller $class = new ReflectionClass(ucfirst(Router::$controller).'_Controller'); // Create a new controller instance $controller = $class->newInstance(); // Load the controller method $method = $class->getMethod(Router::$method); // Execute the controller method $method->invokeArgs($controller, $arguments);
phpExplication détaillée de l'interaction et de l'interface de la plateforme publique WeChat
phpExplication détaillée du téléchargement de fichiers
phpApplication de développement js-sdk du compte public WeChat
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!