Vous en avez assez de créer des implémentations SOAP merdiques ? Ce package vise à vous aider à résoudre certains problèmes courants d'intégration SOAP en PHP. Son objectif est de rendre l'intégration avec SOAP à nouveau amusante !
Vous souhaitez plus d’informations sur l’avenir de ce projet ? Consultez cette liste des prochains grands projets sur lesquels nous travaillerons.
Vous pouvez choisir le client HTTP que vous souhaitez utiliser. Ce package s'attend à ce que certaines implémentations PSR soient présentes pour pouvoir être installées :
psr/cache-implementation
comme symfony/cache
ou cache/*-adapter
psr/http-message-implementation
comme nyholm/psr7
ou guzzlehttp/psr7
psr/http-factory-implementation
comme nyholm/psr7
ou guzzlehttp/psr7
psr/http-client-implementation
comme symfony/http-client
ou guzzlehttp/guzzle
Exemple:
$ composer require symfony/http-client nyholm/psr7
$ composer require phpro/soap-client
Comme la vie est trop courte pour lire de la documentation, nous avons ajouté un assistant d'échafaudage qui vous permettra de communiquer avec votre serveur SOAP en un rien de temps ! Tout ce que vous avez à faire est de :
./vendor/bin/soap-client wizard
Vous pouvez personnaliser le code généré en fonction des pages d'installation manuelle du chapitre suivant.
Il s'agit d'une implémentation client au-dessus de php-soap. Pour une configuration plus avancée, vous pouvez consulter la documentation contenue dans les packages php-soap.
Rules
de générationAssemblers
Par défaut, SoapClient fonctionne avec un mélange de tableaux, de stdClasses et d'autres types scalaires. Ce n'est pas une bonne pratique dans un monde POO moderne car :
Pour résoudre les problèmes ci-dessus, ce package vous obligera à utiliser des objets de valeur pour les requêtes et les réponses. Nous savons que la maintenance de ces objets de valeur peut représenter une charge de travail. Pas de soucis! Certains outils de ligne de commande sont disponibles qui vous aideront à générer une bonne base pour commencer. Étant donné que SoapClient aura besoin d’un classmap de WSDL vers les classes PHP, un générateur de classmap est également disponible. Cela vous fera sûrement gagner beaucoup de temps ! En ajoutant des convertisseurs de type SOAP, il est possible de transformer les valeurs d'un type SOAP spécifique depuis/vers un type PHP. Le package est livré avec quelques transformateurs de base pour la date et la date/heure. De plus, il est très simple de créer vos propres transformateurs.
Un autre problème est que le SoapClient natif fonctionne avec de nombreuses méthodes magiques. Il est difficile de déboguer ces méthodes magiques et il n’y a donc pas d’achèvement de code. SOAP et les méthodes d'implémentation se trouvent sur le même objet.
Ce package vous obligera à intégrer un SoapClient dans votre propre client. Vous pouvez choisir de n’exposer que les méthodes dont vous avez besoin. Le développeur saura toujours clairement ce que contient votre client, comment il fonctionne et ce qu'il renvoie. Nous avons même fourni un client de base que vous pouvez utiliser avec certaines méthodes couramment utilisées pour le débogage, l'authentification et un système d'événements.
Dans de nombreuses intégrations SOAP, la journalisation, la mise en cache et les appels Soap s'effectuent selon la même méthode. Cela rend votre code difficile à lire et dépendant d'autres classes/packages.
Créer un excellent client OO SOAP signifie que vous devrez créer beaucoup de code. Cela peut être une tâche fastidieuse qui peut être automatisée. C'est pourquoi nous avons ajouté les outils permettant de générer automatiquement les objets SOAP à partir du schéma XSD à l'intérieur du WSDL. Il est même possible de spécifier vos propres règles de génération de code et assembleurs de code ou d'utiliser l'une de nos nombreuses classes intégrées.
Il est important de garder votre code propre. Par conséquent, nous avons ajouté un écouteur d'événements à votre client Soap. Vous pouvez vous connecter à chaque étape importante du flux SOAP. De cette façon, il est possible d'ajouter la journalisation, la validation et la gestion des erreurs avec les abonnés aux événements. Plutôt cool, non ?!
Implémenter des extensions SOAP est un vrai casse-tête. Cela vous oblige à écraser les méthodes principales du client SOAP intégré. Si vous avez déjà dû implémenter WSA ou WSSE dans SOAP, vous savez qu'il y a quelque chose qui ne va pas dans le noyau. Par conséquent, nous vous avons facilité l’extension de notre client SOAP. Vous pouvez spécifier quel gestionnaire de transfert de données, comme par exemple Guzzle, vous souhaitez utiliser. En fonction du gestionnaire sélectionné, vous pouvez facilement ajouter la prise en charge des extensions SOAP ou l'authentification avancée via des middlewares HTTP.
Gérer Ext-Soap n'est pas pour tous les développeurs. Il y a quelques bizarreries désagréables que vous devez connaître. Par conséquent, nous vous avons permis d'utiliser le pilote que vous souhaitez utiliser. Par défaut, nous fournirons toujours un pilote ext-soap, mais il est entièrement facultatif. Vous pouvez utiliser n’importe quelle implémentation SoapClient utilisateur si vous l’encapsulez dans nos propres interfaces de pilote.
Tester des services Web est difficile ! Ce package propose différentes manières de tester un service SOAP. Puisque le transport est basé sur HTTP, vous pouvez utiliser une implémentation php-vcr
. Si vous ne souhaitez pas effectuer d'appels HTTP réels, vous pouvez également utiliser un Transport
ou Caller
personnalisé dans vos cas de test. Le test de votre client SOAP sera très rapide et sans aucune erreur du côté tiers de l'intégration.
Enfin et surtout, nous souhaitons vous faciliter la configuration de votre SoapClient. C'est pourquoi nous avons inclus une ClientFactory générée sur laquelle vous pouvez configurer votre client personnalisé. Vous souhaitez d’autres réglages pendant le développement et en production ? Aucun problème! Asseyez-vous et laissez l'usine gérer l'initialisation de votre client.