1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP反射机制用法实例

作者:用户 来源:互联网 时间:2017-12-01 18:19:54

实例反射机制

PHP反射机制用法实例 - 摘要: 本文讲的是PHP反射机制用法实例,本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用。具体方法如下:演示示例代码如下所示:<?phpclass ClassOne { function callClassOne() { print "In Class

本文实例讲述了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程序设计有所帮助。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例 , 反射 机制 ,以便于您获取更多的相关知识。