Wsdl2phpgenerator : Un générateur de client webservice SOAP en PHP
Vous avez déjà intégré des services SOAP en PHP ? C'est complexe et consommateur en temps, l'objet PHP "request" en entrée de la classe SOAPClient doit être construit avec parcimonie, une fois l'intégration du service terminée, le code PHP peut très vite devenir compréhensible si le service est complexe et si celui-ci possède des énumérations. Pour palier à cela et gagner en productivité sur l'intégration de services SOAP dans votre application PHP, la librairie wsdl2phpgenerator peut vous faire gagner un temps précieux.
Pour rappel, l__'interface d'un service SOAP__ est décrite par un document XML qui se prénomme WSDL. C'est un document décrivant les messages d'entrée et de sortie d'un service.
Ce WSDL est :
- Soit généré à partir du code du développeur développé au niveau du service, on appelle cette méthode de développement "code first" .
- Soit fabriqué à la main par le développeur puis utilisé pour générer le code source du serveur, on appelle la méthode de développement "contract first".
Pour générer un client SOAP dans votre application PHP avec Wsdl2phpgenerator, la méthode est très simple, tout d'abord ajoutez la librairie à vos dépendances de Composer :
$ composer require wsdl2phpgenerator/wsdl2phpgenerator
Fabriquez ensuite le script PHP que vous appellerez manuellement via PHP-CLI pour générer le code source de votre client Webservice :
$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
new \Wsdl2PhpGenerator\Config(array(
'inputFile' => 'https://www.webservicex.net/CurrencyConvertor.asmx?WSDL',
'outputDir' => '/tmp/CurrencyConverter'
))
);
Réalisez dans un troisième temps le code qui appellera ce Webservice via les classes générées par Wsdl2phpgenerator:
require '/tmp/CurrencyConverter/autoload.php';
$service = new \CurrencyConvertor();
$request = new \ConversionRate(\Currency::USD, \Currency::EUR);
$response = $service->ConversionRate($request);
echo $response->getConversionRateResult();
Le service généré étend la classe SOAPClient de PHP, un tableau d'options peut être passé en paramètre du constructeur de la classe service générée pour préciser l'URL du WSDL, le timeout du service, le proxy HTTP à utiliser, les informations d'authentification de type Basic Auth ....
Vous retrouverez toute la documentation d'usage de cette librairie sur GitHub..
Une fois que vous aurez testé Wsdl2phpgenerator, plus jamais vous vous amuserez à fabriquer vos SOAPClient manuellement ;-)
''Crédits du schéma : Philippe Le Hégaret''