jun 13
2009
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 un metodo dentro de una clase definida por el usuario en el servidor.
Implementar la Clase a Utilizar :
- Ir al directorio web donde se quiere crear el servicio
- Utilizando su editor favorito crear un archivo donde se implemente la clase y sus metodos :
(utilizaremos una clase Calculadora con el metodo sumar que recibe dos numero y retorna su suma) - Crear el archivo Calculadora.php
<?php
// Clase que implementa los servicios
class Calculadora
{
// Metodo a utilizar como servicio
public 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 clase Calculadora 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 asignar la clase al webservice se debe suministrar el nombre.
<?php
// Incluir la Clase
require_once('Calculadora.php');
// Crear servidor de Soap
$server = new SoapServer(
null, // No utilizar WSDL
array('uri' => 'urn:webservices') // Se debe especificar el URI
);
// Asignar la Clase
$server->setClass('Calculadora');
// 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://localhost/~marlonj/servicio.php',
'uri' => 'urn:webservices',
));
// Llamar el metodo como si fuera 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
De esta forma podemos crear una clase que contenga los metodos a ser utilizados como webservices, de esta forma el servidor crea una instancia de la clase Calculadora cada vez que se invoca un servicio.
Tambien es posible asignar un objeto al servicio para esto podemos crear una instancia del objeto a utilizar como servicio web y enlazarlo con el webservice, asi :
<?php
// Incluir la Clase
require_once('Calculadora.php');
// Crear servidor de Soap
$server = new SoapServer(
null, // No utilizar WSDL
array('uri' => 'urn:webservices') // Se debe especificar el URI
);
// Crear el objeto a utilizar como webservice
$calculadora = new Calculadora();
// Asignar el Objeto
$server->setObject($calculadora);
// Atender los llamados al webservice
$server->handle();
?>
Comentarios
(2)


