soapclient ejemplos __soapcall php web-services soap wsdl

ejemplos - Manejar solicitudes a varias clases dentro del mismo servidor PHP SOAP



soapclient authentication php (3)

¿Podría envolver los otros servicios en una sola clase? Completamente no probado, solo fue un pensamiento ...

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; } }

¿Es posible tener un solo servidor PHP SOAP que manejará las solicitudes a varias clases (servicios)?

En caso afirmativo, ¿podría mostrar una implementación de ejemplo?

Si no, ¿podrías describir por qué?


Otra opinión sobre la misma idea general (clase de proxy) - para php5 Utiliza un hash para asignar funciones a devoluciones de llamada.

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; } } }

Esta clase también podría usar la API de reflexión y agregar todos los métodos pulic desde un objeto, por ejemplo.


Si ambas clases tuvieran métodos con nombres idénticos (pero diferentes parámetros), entonces podrías usar func_get_args () para analizar los argumentos y diferenciar entre los métodos de esa manera.

Si toman los mismos argumentos ... entonces estás un poco atrapado.

¿Por qué no puedes simplemente usar dos servicios web separados?