Construction du web service serveur

Construire un service web en PHP 5 grâce à l'extension SOAP

Introduction

SOAP est un protocole basé sur XML, qui permet l'échange de données structurées entre applications. PHP 5 fournit une nouvelle extension, permettant de créer aisément des clients et serveurs SOAP, basée sur un ensemble de classes de bas niveau. Nous allons donc voir comment créer un service web simple (un serveur SOAP ) et comment interroger ce serveur (un client SOAP ). Notre service web sera décrit dans un fichier WSDL.

Conclusion

Encore une fois, PHP 5 nous apporte ici une nouvelle fonctionnalité très intéressante, qui simplifie grandement les choses en matière d'interrogation ou de création de service web. Le même résultat aurait demandé quelques centaines de lignes de code en PHP 4.

WSDL Writer 0.3-katy.1 : Génération Automatique de WSDL en PHP 5

L'outil WSDL Writer by katy est le prolongement du projet WDSL-Writer (par Giffin.org et abandonné de son auteur David Griffin). Premièrement, il fonctionne très bien. Ensuite même les types complexes (classes) sont bien gérés et générés dans le WSDL. Son utilisation est simple et relative à la PhpDoc. Le site de Katy illustre et résout des exemples d'utilisation. Ce générateur de WSDL semble correspondre parfaitement à ce que je cherchais, bilan : merci Katy !

Un seul souci rencontré : undefined ReflectionProperty::getDocComment() La cause provenait de ma version de PHP : 5.0.4 et la résolution s'est faite en compilant le Wsdl sur un PHP 5.2.0

Construire ses classes avec Dia et le plugin uml2php5

Créer un service web avec uml2php5

Introduction

uml2php5 est un plugin destiné à se greffer sur Dia, application de modélisation UML fonctionnant sous linux et windows, permettant de générer automatiquement les squelettes des classes PHP à partir des diagrammes. Ce plugin est basé sur XSLT. Depuis la version 2.0, uml2php5 intègre une nouvelle fonctionnalité fort intéressante, la génération de services web basés sur SOAP et WSDL. Le plugin génèrera la totalité des fichiers nécessaires au fonctionnement de votre service web, à savoir, le serveur SOAP, le fichier WSDL décrivant le service web et le squelette de la (ou des) classe(s) de gestion des requêtes envoyées au service. Nous allons voir comment s'en servir.

Conclusion

Cette nouvelle fonctionnalité, arrivée avec la version 2.0 de uml2php5 est purement et simplement un régal ! La génération de service web devient d'une facilité déconcertante, notamment grâce à la génération automatique du fichier WSDL décrivant le service web, qui restait quand même la tâche la plus fastidieuse.

Conclusion personnelle

Après 2 heures de découverte de Dia et du plugin uml2php5, il est facile de construire le WSDL pour des retours de type primitifs tels que string,int,boolean. Par contre pour retourner des types complexes tels que des objets, il faudrait obtenir la documentation du plugin. Dia est un bon outil, il est même gratuit. Le plugin aussi est gratuit excepté sa documentation qui ne semble pas encore écrite.

Class: PHP WSDL Generator : Generate WSDL from PHP class' code

Le générateur de WSDL à partir de classes PHP écrit par Protung Dragos fût un échec total, car la génération de l'exemple fournit n'ajoutait me pas les méthodes attendues.

Class: Soap Discovery : Generate WSDL for SOAP Web service with reflection

Ce générateur de WSDL à partir de classes PHP écrit par Braulio José Solano Rojas a généré quelque chose de valide, mais semble générer que du type string en retour. Il est donc incomplet.

Références