|
本文实例讲述了php反射机制的用法,分享给大家供大家参考之用。具体方法如下:
演示示例代码如下所示:
<?phpclass 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();?>
输出结果:
In Class One
可见,通过代理类ClassOneDelegator来代替ClassOne类来实现他的方法。
同样的,如下的代码也是能够运行的:
<?phpclass ClassOne { function callClassOne() { print "In Class One"; }}class ClassOneDelegator { private $targets; function addObject($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();?>
希望本文所述对大家的php程序设计有所帮助。
php技术:PHP反射机制用法实例,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。