<?php class mysql{ function connect($db){ echo "连接mysql数据库${db[0]} \r\n"; } } class oracle{ function connect($db){ echo "连接oracle数据库${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); } } } } } $mysql = new sqlproxy('mysql'); $mysql->connect('member'); $oracle = new sqlproxy('oracle'); $oracle->connect('member');
这里 sqlproxy起到一个代理的作用,使用时无需关注 mysql和oracle的实现