<?php /*2014-03-26 *根据反射API实现了简单的动态代理,真正操作类是mysql类。但是通过sqlprozy类实现了根据动态传入参数,代替实际的运行的类。在具体运行当中需要根据实际情况来使用,不要滥用反射,反射的消耗也比较大。 平时一般情况下有两个方面用到1:对对象进行调试2:获取类的信息。 */ class mysql{ function connect($db){ echo "连接到数据库",$db[0],"\r\n"; } } class sqlproxy{ private $target; function __construct($tar){ $this->target[] = new $tar(); } function __call($name,$args){ foreach($this->target as $obj){ $r = new ReflectionClass($obj); if($method=$r->getMethod($name)){ if($method->ispublic() && !$method->isAbstract()){ $method->invoke($obj,$args); } } } } } $obj = new sqlproxy('mysql'); $obj->connect('member'); ?>