Una de las tantas formas de crear aplicaciones orientadas a servicios es el uso de los webservices que permiten realizar llamados a funciones que se encuentrar en un servidor desde otras maquinas de forma remota, permitiendo un desarrollo independiente de la plataforma, utilizando tecnologias abiertas.
La version 4 de PHP no incluye soporte directo para la implementacion de webservices, por tal motivo eran necesarias librerias con NuSOAP que implementaban los diferentes componentes para la creacion de webservices a si como su consumo, aun hoy se sigue utilizando esta libreria gracias a que soporta la generacion del descriptor del webservice de forma automatica.
En la version 5 de PHP se incorporan las clases necesarias para la creacion de webservices y su invocacion desde clientes remotos, a continuacion se ilustra como crear un webservice en PHP que ejecute una funcion definida por el usuario en el servidor.
Implementar la Funcion a Utilizar :
- Ir al directorio web donde se quiere crear el servicio
- Utilizando su editor favorito crear un archivo donde se implemente la funcion :
(utilizaremos una funcion suma que recibe dos numero y retorna su suma)
- Crear el archivo sumar.php
<php
function sumar($x, $y)
{
return $x + $y;
}
>
Implementar el Servicio Web :
- Utilizando su editor favorito crear un archivo donde se cree el servidor
- Crear el archivo servicio.php
- Incluir la funcion suma a utilizar dentro del webservice
- No se utilizara WSDL ya que toca generarlo a mano para el servicio
- Al no utilizar WSDL se debe suministrar el namespace, en este caso uri:webservices
- Al momento de adicionar las funciones al webservice se puede especificar el nombre de la funcion, un arreglo con los nombres de las funciones a adicionar al servicio.
<php
// Incluir la funcion
require_once('sumar.php');
// Crear servidor de Soap
$server = new SoapServer(
null, // No utilizar WSDL
array('uri' => 'urn:webservices') // Se debe especificar el URI
);
// Adicionar las funciones
$server->addFunction(
array('sumar')
);
// Atender los llamados al webservice
$server->handle();
?>
- Abrir la pagina PHP en su navegador favorito, debe salir en blanco sin reportar errores
http://<servidor>/<ruta>/servicio.php
Implementar el Cliente :
- En este caso implementaremos un cliente en el lenguaje PHP para consumir el servicio.
- Utilizando su editor favorito crear un archivo cliente.php
<php
// Crear el cliente suministrado la ruta del servicio
// Utilizar el uri
$client = new SoapClient(null,
array(
'location' =>; 'http://<servidor>/<ruta>/servicio.php',
'uri' =>; 'urn:webservices',
));
// Llamar la funcion como si fuenra un metodo del cliente
echo $client->sumar(3,4);
?>
- Abrir la pagina PHP del cliente en su navegador favorito, debe salir en blanco sin reportar errores
http://<servidor>/<ruta>/cliente.php
Con esto ya tenemos un servicio web en PHP que puede ser llamado remotamente desde otro servidor que implemente el cliente o cualquier otro lenguaje que permita implementar clientes de webservices.
Enlaces :