是否可以使用单个PHP SOAP服务器来处理对多个类(服务)的请求?
如果是,请举例说明实施例?
如果没有,你能说出原因吗?
答案 0 :(得分:2)
你能将其他服务包装在一个类中吗?完全未经测试,这只是一个想法...
class MySoapService { public function __construct() { $this->_service1 = new Service1(); $this->_service2 = new Service2(); } // You could probably use __call() here and intercept any calls, // thus avoiding the need for these declarations in the wrapper class... public function add($a, $b) { return $this->_service1->add($a, $b); } public function sub($a, $b) { return $this->_service2->sub($a, $b); } } class Service1 { public function add($a, $b) { return $a + $b; } } class Service2 { public function sub($a, $b) { return $a - $b; } }
答案 1 :(得分:0)
另一个关于相同的一般想法(代理类) - 对于php5 使用哈希将函数映射到回调。
class ServiceProxy {
private $map = array();
public function addMethod($name, $callback) {
if(is_callable($callback)) {
$this->map[$name] = $callback;
return true;
}
return false;
}
function __call($name, $args) {
if(isset($map[$name])) {
return call_user_func_array($map[$name], $args);
} else {
return null;
}
}
}
此类也可以使用反射API并添加来自对象的所有pulic方法,例如。
答案 2 :(得分:0)
如果两个类的方法具有相同的名称(但参数不同),那么您可以使用func_get_args()来分析参数并区分这些方法。
如果他们采取相同的论点......那么你就有点卡住了。
为什么不能只使用两个单独的Web服务?