Cansado de criar implementações SOAP ruins? Este pacote tem como objetivo ajudá-lo com alguns problemas comuns de integração SOAP em PHP. Seu objetivo é tornar a integração com o SOAP divertida novamente!
Quer mais informações sobre o futuro deste projeto? Confira esta lista dos próximos grandes projetos em que estaremos trabalhando.
Você pode escolher qual cliente HTTP deseja usar. Este pacote espera que algumas implementações PSR estejam presentes para serem instaladas:
psr/cache-implementation
como symfony/cache
ou cache/*-adapter
psr/http-message-implementation
como nyholm/psr7
ou guzzlehttp/psr7
psr/http-factory-implementation
como nyholm/psr7
ou guzzlehttp/psr7
psr/http-client-implementation
como symfony/http-client
ou guzzlehttp/guzzle
Exemplo:
$ composer require symfony/http-client nyholm/psr7
$ composer require phpro/soap-client
Como a vida é muito curta para ler documentação, adicionamos um assistente de scaffolding que permitirá que você se comunique com seu servidor SOAP rapidamente! Tudo que você precisa fazer é:
./vendor/bin/soap-client wizard
Você pode personalizar o código gerado com base nas páginas de instalação manual no próximo capítulo.
Esta é uma implementação de cliente em cima do php-soap. Para configurações mais avançadas, você pode verificar a documentação dentro dos pacotes php-soap.
Rules
de geraçãoAssemblers
Por padrão, o SoapClient funciona com uma mistura de arrays, stdClasses e outros tipos escalares. Esta não é uma boa prática em um mundo OOP moderno porque:
Para resolver os problemas acima, este pacote irá forçá-lo a usar objetos de valor para solicitações e respostas. Sabemos que manter esses objetos de valor pode dar muito trabalho. Sem problemas! Existem algumas ferramentas de linha de comando disponíveis que o ajudarão a gerar uma boa base para começar. Como o SoapClient precisará de um mapa de classe de WSDL para classes PHP, também há um gerador de mapa de classe disponível. Isso certamente economizará muito tempo! Ao adicionar conversores de tipo SOAP, é possível transformar os valores de um tipo SOAP específico de/para um tipo PHP. O pacote vem incluído com alguns transformadores básicos para data e hora. Além disso, é muito fácil criar seus próprios transformadores.
Outro problema é que o SoapClient nativo funciona com vários métodos mágicos. É difícil depurar esses métodos mágicos, portanto, não há conclusão de código. Os métodos SOAP e de implementação estão no mesmo objeto.
Este pacote irá forçá-lo a agrupar um SoapClient em seu próprio cliente. Você pode optar por expor apenas os métodos necessários. Sempre ficará claro para o desenvolvedor o que há no seu cliente, como funciona e o que retorna. Nós até fornecemos um cliente base para você usar com alguns métodos comumente usados para depuração, autenticação e um sistema de eventos.
Em muitas integrações SOAP, o registro, o cache e as chamadas Soap estão no mesmo método. Isso torna seu código difícil de ler e dependente de outras classes/pacotes.
Criar um ótimo cliente OO SOAP significa que você terá que criar muito código. Esta pode ser uma tarefa tediosa que pode ser automatizada. É por isso que adicionamos as ferramentas para gerar automaticamente os objetos SOAP a partir do esquema XSD dentro do WSDL. É ainda possível especificar suas próprias regras de geração de código e montadores de código ou usar uma de nossas muitas classes integradas.
É importante manter seu código limpo. Portanto, adicionamos um ouvinte de evento ao seu cliente Soap. Você pode participar de cada etapa importante do fluxo SOAP. Desta forma é possível adicionar log, validação e tratamento de erros com assinantes de eventos. Muito legal né?!
Implementar extensões SOAP é um verdadeiro pé no saco. Ele força você a substituir os métodos principais do cliente SOAP integrado. Se você já teve que implementar WSA ou WSSE em SOAP, sabe que há algo errado no núcleo. Portanto, facilitamos a extensão do nosso cliente SOAP. Você pode especificar qual manipulador de transferência de dados, como por exemplo, Guzzle, deseja usar. Dependendo do manipulador selecionado, você pode adicionar facilmente suporte para extensões SOAP ou autenticação avançada por meio de middlewares HTTP.
Lidar com ext-soap não é para todos os desenvolvedores. Existem algumas peculiaridades desagradáveis que você precisa conhecer. Portanto, possibilitamos que você use o driver que desejar. Por padrão, ainda enviaremos um driver ext-soap, mas ele é totalmente opcional. Você pode usar qualquer implementação do SoapClient do usuário se agrupá-la em nossas próprias interfaces de driver.
Testar webservices é difícil! Este pacote fornece várias maneiras de testar um serviço SOAP. Como o transporte é baseado em HTTP, você poderia usar uma implementação php-vcr
. Se não quiser fazer chamadas HTTP reais, você também pode usar um Transport
ou Caller
personalizado em seus casos de teste. Testar seu cliente SOAP será muito rápido e sem erros no lado terceirizado da integração.
Por último, mas não menos importante, queremos facilitar a configuração do seu SoapClient. É por isso que incluímos um ClientFactory gerado no qual você pode configurar seu cliente personalizado. Você deseja outras configurações durante o desenvolvimento e a produção? Sem problemas! Relaxe e deixe a fábrica cuidar da inicialização do seu cliente.