php用反射API實現了簡單的動態代理
阿新 • • 發佈:2019-02-19
<?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'); ?>