<?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');
?>
php用反射API实现了简单的动态代理
最新推荐文章于 2023-03-30 09:59:38 发布