Maison > Article > développement back-end > Explication détaillée de la façon d'implémenter le code du mécanisme de réflexion PHP
Par la classe proxy ClassOneDelegator au lieu de la classe ClassOne pour implémenter ses méthodes.
Le code de démonstration est le suivant :
<?php class ClassOne { function callClassOne() { print "In Class One"; } } class ClassOneDelegator { private $targets; function construct() { $this->target[] = new ClassOne(); } function call($name, $args) { foreach ($this->target as $obj) { $r = new ReflectionClass($obj); if ($method = $r->getMethod($name)) { if ($method->isPublic() && !$method->isAbstract()) { return $method->invoke($obj, $args); } } } } } $obj = new ClassOneDelegator(); $obj->callClassOne(); ?>
Résultat de sortie :
En classe un
On peut voir que la classe proxy ClassOneDelegator est utilisée à la place de la classe ClassOne pour mettre en œuvre sa méthode.
De même, le code suivant peut également être exécuté :
<?php class ClassOne { function callClassOne() { print "In Class One"; } } class ClassOneDelegator { private $targets; function add Object ($obj) { $this->target[] = $obj; } function call($name, $args) { foreach ($this->target as $obj) { $r = new ReflectionClass($obj); if ($method = $r->getMethod($name)) { if ($method->isPublic() && !$method->isAbstract()) { return $method->invoke($obj, $args); } } } } } $obj = new ClassOneDelegator(); $obj->addObject(new ClassOne()); $obj->callClassOne(); ?>
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!