300px-ZendFramework-Logo

SOAP com Zend Framework

Objetivo

O objetivo deste tutorial é ensinar a criar um Servidor SOAP, utilizando
a biblioteca do Zend Framework.
Pedi para o meu amigo Artista Frustrado, elaborar uma introdução a webservice, e fazer exemplos em outras linguagens, confira.

Material

Componentes do Zend Framework:

  • Zend_Loader
  • Zend_Soap
  • Zend_Soap_Client
  • Zend_Soap_AutoDiscover

Arquivos soap.tar.bz2:

Testado no seguinte ambiente:

  • Versão do Zend Framework testada: 1.7.5
  • Sistema Operacional: Linux
  • Distribuição: Debian Lenny
  • Versão do PHP: PHP 5.2.6-1+lenny2
  • Versão do Apache: Apache/2.2.9 (Debian)

Material recomendado para leitura:

SOAP

O SOAP é um protocolo de comunicação entre o web service e o cliente. Suas especificações não são simplesmente uma transferência de XML basica, são envolvidas diversas regras para aplicações em diveras plataformas e formatos de XML.

Quando utilizar SOAP?

Quando você não quer disponibilizar a apresentação da camada so seu aplicativo, e sim, apenas algumas funcionalidades, evitando abrir conexões com bancos.

Quando você tem que iteragir com outros sistemas homogeneos. Exemplo, o seu fornecedor tem uma aplicação em .NET e precisa acessar uncionalidades do seu sistema que é feito em PHP. Assim, temos linguagens, sistemas operacionais e banco de dados diferentes podendo se comunicar.

Quando você quer centralizar as regras de negócios no servidor. Usando clientes que acessam o servidor, sendo eles qualquer dispositivo (PDA, Terminal, celular etc.)

Configurando o Ambiente

Temos a seguinte estrutura de pastas:

Na pasta soap é aonde ficam os arquivos e na pasta zf a biblioteca do Zend Framework.

– Descompacte o arquivo soap.tar.bz2 na sua pasta web (no meu caso foi na pasta /var/www)

– Configure o apache para apontar para a pasta do soap
No Linux:

– Adicione no arquivo hosts: 127.0.0.1 soap.localhost
No Linux: adicione a linha no arquivo /etc/hosts

– Reinicie o apache

– Teste no browser os endereços:
– http://soap.localhost
– http://soap.localhost?wsdl

– Finalmente execute o cliente:
No Linux:

Pronto você já esta usando SOAP.

Exemplo

O nosso exemplo consiste em um servidor web rodando um web service em PHP com Zend_Soap_Client Zend Framework, e um cliente também em PHP que acessa a mesma máquina através do console, no endereço http://soap.localhost.

O cliente deve solicitar ao servidor algumas funções, e obter suas respostas.

O arquivo index.php contém o código para a criação do arquivo WSDL e do servidor SOAP.
O Zend_Soap_AutoDiscover cria o arquivo WSDL para o servidor SOAP.
O Zend_Soap que executa as funções cadastradas no WSDL, por isso que é passado por parâmetro a url http://soap.localhost/index.php?wsdl .

arquivo index.php

IMPORTANTE: Deve-se colocar o tipo de dados que os métodos recebem e retornam usando os tipos de dados do PHPDOC. Veja nos comentários do exemplo.

arquivo Server/Soap.php

O Zend_Soap_Client conecta no servidor SOAP, passando a url do WSDL. Para acessar as funções cadastradas basta a variável instanciada e o nome da função.

arquivo client.php:

A classe Calculadora

Temos duas instâncias do objeto Calculadora, uma para o servidor , aonde contém o método calcular() e a do cliente aonde temos o método resposta().
Para passar o objeto Calculadora do cliente para o servidor, e depois do servidor para o cliente, usamos uma técnica chamada serialização.

Server/Calculadora.php

Client/Calculadora.php

Para dúvidas ou críticas construtivas entre em contato.

3 thoughts on “SOAP com Zend Framework

  1. Estou tentando fazer algo parecido, mas que nao eh diferente do que voce fez. Apenas estou iniciando o servidor em um controller. O problema e que sempre recebo uma mensagem de erro:

    [WSDL] SOAP-ERROR: Parsing WSDL: Couldn’t find

    Nao sei o que esta acontecendo. Tem alguma ideia ?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *