Maison > Article > développement back-end > Explication détaillée de l'exemple de mécanisme de réflexion php Reflection
PHP5 ajoute une nouvelle fonctionnalité : La réflexion. Cette fonctionnalité permet aux programmeurs de
effectuer une rétro-ingénierie de classe, d'interface, de fonction, de méthode et d'extension [prise en charge de la bibliothèque d'extensions].
Grâce au code PHP, vous pouvez obtenir toutes les informations d'un objet et interagir avec lui.
Supposons la classe Person suivante :
class Person { /** * For the sake of demonstration, we"re setting this private */ private $_allowDynamicAttributes = false; /** * type=primary_autoincrement */ protected $id = 0; /** * type=varchar length=255 null */ protected $name; /** * type=text null */ protected $biography; public function getId() { return $this->id; } public function setId($v) { $this->id = $v; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } public function getBiography() { return $this->biography; } public function setBiography($v) { $this->biography = $v; } }
Grâce à ReflectionClass, nous pouvons obtenir les informations suivantes de la classe Person :
Constantes
Propriétés de propriété
Noms de méthodes
Propriétés statiques 🎜>
$class = new ReflectionClass('Person');
Par défaut Dans ce cas, ReflectionClass obtiendra toutes les propriétés, y compris les privés et les protégés. Si vous souhaitez uniquement obtenir l'attribut privé, vous devez passer un paramètre supplémentaire :
$properties = $class->getProperties(); foreach($properties as $property) { echo $property->getName()."\n"; } // 输出: // _allowDynamicAttributes // id // name // biography
Liste des paramètres disponibles :
$private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE);ReflectionProperty ::IS_STATIC
C'est un peu incroyable. Vous pouvez même obtenir des commentaires.
foreach($properties as $property) { if($property->isProtected()) { $docblock = $property->getDocComment(); preg_match('/ type\=([a-z_]*) /', $property->getDocComment(), $matches); echo $matches[1]."\n"; } } // Output: // primary_autoincrement // varchar // text
* Get méthodes (méthodes)
: Obtenez toutes les méthodes de la classe via getMethods(). Ce qui est renvoyé est untableau d'objets ReflectionMethod. Plus de manifestations.
* Enfin, appelez la méthode dans la classe via ReflectionMethod.
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!