Muitas organizações adotaram Apache e PHP como ambiente de aplicação Web. Adotar o PHP no modo de serviços Web pode parecer difícil. Mas, na verdade, com NuSoap, você pode facilmente usar PHP para construir cliente e servidor SOAP.
Para ilustrar como usar NuSoap e PHP para construir serviços Web, daremos um exemplo simples. Este aplicativo de exemplo consiste em um servidor e cliente de serviços da Web PHP. Ele implementará duas funções: reverter a ordem dos caracteres em uma string e encontrar a soma de dois números.
Servidor PHP SOAP Configurar um servidor SOAP é muito fácil com PHP e NuSoap. Basicamente, você apenas escreve as funções que deseja expor aos seus serviços Web e registra-as no NuSoap.
OK, há mais duas etapas necessárias para concluir o estabelecimento do servidor PHP SOAP. Primeiro você deve criar uma instância do objeto NuSoap em seu código PHP e, em seguida, usar o método HTTP POST para passar os dados brutos ao NuSoap para processamento. Parece simples? Vamos dar uma olhada na Listagem 1 primeiro.
Listagem 1: soapfunc.php
<?
require_once('nusoap.php');
função reversa($str){
$retval = "";
if(strlen($str) < 1) {
return new soap_fault('Cliente','','String inválido');
}
for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
retornar $retval;
}
função adicionar2números($num1, $num2) {
if (trim($num1) != intval($num1)) {
return new soap_fault('Cliente', '', 'O primeiro número é inválido');
}
if (trim($num2) != intval($num2)) {
return new soap_fault('Cliente', '', 'O segundo número é inválido');
}
retornar ($num1 + $num2);
}
?>
A Listagem 1 fornece o arquivo fonte de soapfunc.php. Este arquivo contém duas funções que queremos expor aos serviços Web através do protocolo SOAP: reverse e add2numbers, que são o núcleo de nossa aplicação de serviços Web. A função reversa recebe um argumento, inverte a ordem dos caracteres na string e o retorna.
Listagem 2: soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = novo sabonete_server;
$soap->registrar('reverso');
$soap->registrar('add2números');
$soap->serviço($HTTP_RAW_POST_DATA);
?>
A Listagem 2 ilustra o uso das funções de registro do NuSoap e da chamada de manipuladores SOAP. Como você pode ver, registrar suas duas funções (em soapfunc.php) e passar os dados POST para o objeto soap_server é tão fácil quanto criar uma nova instância do objeto soap_server. O objeto soap_server examinará os dados POST e determinará qual função chamar e, em seguida, passará os parâmetros para esta função PHP. Os dados retornados da função PHP são reempacotados em uma resposta SOAP e entregues ao cliente SOAP que solicita o serviço.
Cliente PHP SOAP Agora que criamos um servidor SOAP usando NuSoap e PHP, precisamos testá-lo. Assim como estabelecemos um programa de servidor SOAP, podemos usar NuSoap para criar um programa cliente SOAP em PHP. A Listagem 3 fornece o programa fonte do programa cliente PHP SOAP.
Agora que criamos um servidor SOAP usando NuSoap e PHP, precisamos testá-lo. Assim como estabelecemos um programa de servidor SOAP, podemos usar NuSoap para criar um programa cliente SOAP em PHP. A Listagem 3 fornece o programa fonte do programa cliente PHP SOAP.
Listagem 3: soapclient.php
<?
include('nusoap.php');
$client = new soapclient('http://localhost/soapserver.php');
$str = "Esta string será revertida";
$params1 = array('str'=>$str);
$reverso = $cliente->call('reverso',$params1);
echo "Se você reverter '$str', você obterá '$reversed'<br>n"
;
$n2 = 14;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$adicionado = $cliente->call('add2numbers', $params2);
echo "Se você adicionar $n1 e $n2 você receberá $added<br>n";
?>
Para usar um programa cliente PHP em um servidor SOAP, você precisa fazer três coisas. Primeiro, você precisa criar um objeto soapclient. O objeto soapclient é responsável por tratar do empacotamento dos parâmetros e do protocolo SOAP. soapclient requer um parâmetro que deve ser uma URL. Essa URL pode apontar para um terminal HTTP ou uma descrição WSDL do servidor SOAP real. No nosso caso, é uma URL apontando para o nosso servidor PHP SOAP.
Ao chamar uma função que requer parâmetros, você precisa primeiro criar uma matriz de parâmetros, que contém um conjunto de pares de valores-chave. A chave é o nome do parâmetro e o valor é o valor do parâmetro.
Quando você precisa chamar uma função, você usa o objeto soapclient para chamá-la e passa dois parâmetros. O primeiro parâmetro é o nome da função que você deseja chamar e o segundo parâmetro é um array contendo os parâmetros da função SOAP. A função de chamada retornará o valor da função SOAP que você chamou.
Para executar este exemplo, basta inserir a URL para soapclient.php em seu navegador. Você terá uma saída semelhante a:
Se você inverter 'Esta string será revertida', você obterá 'desrever eb lliw gnirts sihT' Se você adicionar 5 e 14, obterá 19