¿Estás cansado y cansado de crear implementaciones SOAP de mala calidad? Este paquete tiene como objetivo ayudarle con algunos problemas comunes de integración SOAP en PHP. ¡Su objetivo es hacer que la integración con SOAP vuelva a ser divertida!
¿Quieres más información sobre el futuro de este proyecto? Consulte esta lista de los próximos grandes proyectos en los que estaremos trabajando.
Puede elegir qué cliente HTTP desea utilizar. Este paquete espera que algunas implementaciones de PSR estén presentes para poder instalarse:
psr/cache-implementation
como symfony/cache
o cache/*-adapter
psr/http-message-implementation
como nyholm/psr7
o guzzlehttp/psr7
psr/http-factory-implementation
como nyholm/psr7
o guzzlehttp/psr7
psr/http-client-implementation
como symfony/http-client
o guzzlehttp/guzzle
Ejemplo:
$ composer require symfony/http-client nyholm/psr7
$ composer require phpro/soap-client
Dado que la vida es demasiado corta para leer documentación, hemos añadido un asistente de scfolding que le permitirá comunicarse con su servidor SOAP en poco tiempo. Todo lo que necesitas hacer es:
./vendor/bin/soap-client wizard
Puede personalizar el código generado según las páginas de instalación manual del siguiente capítulo.
Esta es una implementación de cliente sobre php-soap. Para una configuración más avanzada, puede consultar la documentación dentro de los paquetes php-soap.
Rules
de generaciónAssemblers
De forma predeterminada, SoapClient funciona con una combinación de matrices, stdClasses y otros tipos escalares. Esta no es una buena práctica en un mundo moderno de programación orientada a objetos porque:
Para resolver los problemas anteriores, este paquete lo obligará a utilizar objetos de valor para solicitudes y respuestas. Sabemos que mantener estos objetos de valor puede suponer una gran cantidad de trabajo. ¡No hay problema! Hay algunas herramientas de línea de comandos disponibles que le ayudarán a generar una buena base para empezar. Debido a que SoapClient necesitará un mapa de clases de WSDL a clases PHP, también hay un generador de mapas de clases disponible. ¡Esto seguramente te ahorrará mucho tiempo! Al agregar convertidores de tipo SOAP, es posible transformar los valores de un tipo SOAP específico de/a un tipo PHP. El paquete viene incluido con algunos transformadores básicos para fecha y fecha y hora. Además, es muy fácil crear tus propios transformadores.
Otro problema es que el SoapClient nativo funciona con muchos métodos mágicos. Es difícil depurar estos métodos mágicos, por lo que no se completa el código. Tanto SOAP como los métodos de implementación están en el mismo objeto.
Este paquete lo obligará a incluir un SoapClient en su propio Cliente. Puede optar por exponer solo los métodos que necesita. El desarrollador siempre tendrá claro qué hay en su cliente, cómo funciona y qué devuelve. Incluso le proporcionamos un Cliente base para que lo utilice con algunos métodos comunes de depuración, autenticación y un sistema de eventos.
En muchas integraciones SOAP, el registro, el almacenamiento en caché y las llamadas Soap se realizan con el mismo método. Esto hace que su código sea difícil de leer y dependa de otras clases/paquetes.
Crear un excelente cliente OO SOAP significa que tendrás que crear una gran cantidad de código. Esta puede ser una tarea tediosa que puede automatizarse. Es por eso que hemos agregado herramientas para generar automáticamente los objetos SOAP a partir del esquema XSD dentro del WSDL. Incluso es posible especificar sus propias reglas de generación de código y ensambladores de código o utilizar una de nuestras muchas clases integradas.
Es importante mantener limpio su código. Por lo tanto, agregamos un detector de eventos a su cliente Soap. Puede conectarse a cada paso importante del flujo SOAP. De esta manera es posible agregar registro, validación y manejo de errores con los suscriptores de eventos. Genial, ¿verdad?
Implementar extensiones SOAP es un verdadero dolor de cabeza. Le obliga a sobrescribir los métodos principales del cliente SOAP integrado. Si alguna vez tuvo que implementar WSA o WSSE en SOAP, sabrá que algo anda mal en el núcleo. Por lo tanto, le facilitamos la ampliación de nuestro cliente SOAP. Puede especificar qué controlador de transferencia de datos, como por ejemplo Guzzle, desea utilizar. Dependiendo del controlador seleccionado, puede agregar fácilmente soporte para extensiones SOAP o autenticación avanzada a través de middleware HTTP.
Tratar con ext-soap no es para todos los desarrolladores. Hay algunas peculiaridades desagradables que debes conocer. Por lo tanto, le permitimos utilizar cualquier controlador que desee. De forma predeterminada, seguiremos enviando un controlador ext-soap, pero es completamente opcional. Puede utilizar cualquier implementación de SoapClient en el ámbito del usuario si la incluye en nuestras propias interfaces de controlador.
¡Probar servicios web es difícil! Este paquete proporciona varias formas de probar un servicio SOAP. Dado que el transporte está basado en HTTP, podría utilizar una implementación php-vcr
. Si no desea realizar llamadas HTTP reales, también puede utilizar un Transport
o Caller
personalizado en sus casos de prueba. Probar su cliente SOAP será muy rápido y sin errores en el lado de la integración de terceros.
Por último, pero no menos importante, queremos facilitarle la configuración de su SoapClient. Es por eso que incluimos una ClientFactory generada en la que puede configurar su Cliente personalizado. ¿Quieres otras configuraciones durante el desarrollo y la producción? ¡Ningún problema! Siéntese y deje que la fábrica se encargue de la inicialización de su Cliente.