Desde que conocí la Incutio XML-RPC Library no he necesitado nada más cuando he tenido la necesidad de implementar un cliente o un servidor XML-RPC en PHP.
He usado la Incutio XML-RPC en todos mis últimos proyectos, y Gesbit, el que me ocupa últimamente, no podía ser menos. Implementar un cliente o un servidor con esta biblioteca es tan sencillo que resulta hasta divertido, porque, simplemente, funciona.
Desde mi proyecto "aPHP", sin embargo, hice cambios en la biblioteca (muy sencillos) para adaptarla a PHP 5, y, para Gesbit, he añadido un miembro "timeout" a la clase que implementa los clientes XML-RPC: IXRClient. Pero, como digo, lo que pasma es la sencillez de uso de Incutio XML-RPC Library. He aquí un ejemplo de cliente que prueba el único método público de esta misma bitácora, gestionada con Gesbit:
require('IXRLibrary.inc.php'); $entryPoint = 'http://www.bitacora.davidesperalta.com/xmlrpc/'; $xmlRpcClient = new IXR_Client($entryPoint); if($xmlRpcClient->query('gesbit.getTime')){ $result = $xmlRpcClient->getResponse(); }else{ die($xmlRpcClient->getErrorMessage()); }
El código anterior usa la biblioteca Incutio XML-RPC tal cual, para PHP 4, y, como puedes ver, no puede resultar más sencillo ejecutar un método remoto, en este caso del servidor XML-RPC de esta bitácora. Pero, no te pierdas el servidor. Lo que verás a continuación es el código actual del servidor XML-RPC en Gesbit, que implementa (por su cuenta) el método "gesbit.getTime", que ejecutaba el cliente visto antes:
class GbXmlRpcServer extends IXRIntrospectionServer { public function __construct(){ parent::__construct(); $this->Initialize(); } public function getTime(){ return date('H:i:s'); } private function Initialize(){ $this->addCallback( 'gesbit.getTime', 'this:getTime', array('string'), 'Returns the current server time' ); $this->serve(); return true; } }
He quitado los comentarios para hacer notar aún más su sencillez. Y date cuenta además que estoy aprovechándome además de la clase "IXRIntrospectionServer" y no "IXRServer", puesto que aquella viene a ser una versión avanzada de esta. Como te digo, si la biblioteca Incutio XML-RPC no existiera habría que inventarla.
Publicada el Jueves, 28/2/2008 por David Esperalta
Suscribirse a esta entrada - URL para Trackbacks