Criar Webservices no PHP é uma tarefa realtivamente simples, a grande dificuldade esta em gerar WSDL´s. Isso acontece porque apesar do PHP5 trazer grandes funcionalidades nesse campo, ele não gera o WSDL. Para ajudar, criar WSDL´s é extremamente complexo, com todas as suas variações e opções.
Quando disposnibilizamos um webservice para a plataforma PHP é facil e muito rápido de ser feito, apenas algumas linhas de código para o server e para o client são suficientes para realizar a transação.
Exemplo1:
server.php:
<?php
/*
* Função utilizada para autenticar o usuário na rede.
*/
function Auth($login, $senha){
if(trim($login) == NULL){
return 0;
}
$dbconn = pg_connect("host=10.0.0.1 port=5432 dbname=database user=master password=master");
$query = "select count(*) from usuarios where login=’".$login."’ and pass=’".$senha."’";
$result = pg_query($dbconn, $query);
return $row[0]; // retorna 1 se validar, retorna 0 se não validar
}
$server = new SoapServer(null, array(‘uri’ => ‘http://auth.localhost.com.br/ws_auth/’)); // cria o ambiente para servir o webservice
$server->addFunction("Auth"); // adiciona a função de autenticação ao escopo
$server->handle();
?>
cliente.php:
<?php
/**
* Cria uma instancia do webservice
*/
$client = new SoapClient(null,array(
‘location’ => ‘http://auth.localhost.com.br/ws_auth/server.php’,
‘uri’ => ‘http://auth.localhost.com.br/ws_auth/’,
‘trace’ => 1));
/**
* Para charmar a autenticação deve-se passar o login e a senha que ser quer validar como segue
*
* $result = $client->Auth(‘login’,'senha’);
*
*/
$result = $client->Auth(‘usuario’,'senha’);
/**
* resultado da autenticação
*
*/
print_r($result);
?>
E pronto, muito simples não? O problema é que esse tipo de webservice não é processado por outras plataformas por não gerar WSDL. Plataformas como .NET, JAVA e RUBY precisa de um WSDL para seguir o modelo do objeto que será gerado. Para resolver isso, você pode criar um WSDL seguindo as especificações do W3C (http://www.w3.org/TR/wsdl) ou usar alguma classe de terceiro.
Temos:
Eu já trabalhei com NuSOAP mas deixei de lado, pois ela possui um nome que entra em conflito com uma função nativa do PHP, e para evitar dores de cabeça na distribuição eu resolvi optar por outra classe. Eu escolhi a Webservice Helper tool, por sua facilidade de uso. Todas as classes acima são utilizadas em ambiente de produção, basta escolher a que se adeque melhor ao seu uso.
A Webservice Helper tool consegue criar WSDL com PHP de uma maneira muito fácil e direta. Basicamente se escreve uma classe, adiciona essa classe ao escopo e pronto, o WSDL está pronto para usar, não vou por um exemplo completo aqui para não ficar com o post muito longo, caso tenha alguma dúvida me mande um e-mail. A classe é bem explicada e possui um exemplo muito bom. Você pode baixa-la aqui.
Tags BlogBlogs: php, wsdl no php, wsdl, webservice, webservice com php