Aller au contenu Aller au menu Aller au sous menu Aller à la recherche

Ligams » Publications » Serveur Web » Webservice PHP

Webservice PHP5

A l'instar des autres langages serveur, PHP 5 permet de créer des webservices avec la classe SoapServer (et de les appeler avec SoapClient). Nous allons voir comment créer un webservice en PHP5. Pour les néophytes, un webservice permet à n'importe quel client, d'instancier des objets à distance à partir de n'importe quel langage respectant le protocole SOAP 1.1 et SOAP 1.2 dans le cas présent.

A ce titre, nous allons donc créer la classe MonWebService.

Création de la classe PHP

On crée la classe PHP de manière normale, notez que je commente ma fonction, c'est pour utiliser le dispositif de génération de WSDL de Zend studio (obligatoire pour avoir un WSDL complet), il pourra ainsi typer les retour des fonctions.

 

Création du fichier WSDL avec Zend Studio

Le gros point faible des webservice en PHP, c'est que contrairement aux langages Java et C#, on doit générer le fichier WSDL à la main... impensable tant c'est pénible. Heureusement, Zend Studio pense à nous voici comment générer ce fichier pas à pas :

  1. Fichier > Exporter
  2. Sélectionnez PHP > Fichier WSDL
  3. Créer un nom pour le fichier WSDL, sélectionnez le(s) fichier(s) et le(s) classe(s) que vous souhaitez rendre disponibles, puis cliquez sur terminer

Vous pouvez aussi le générer à la main si vous êtes motivés... ce n'est pas mon cas, et c'est d'un point de vue comptable une perte de temps manifeste. Il faudra peut être ajouter l'adresse du fichier qui fourni le WSDL si vous ne l'avez pas indiqué dans votre projet Zend Studio. Voici le résultat nous concernant :

<?xml version='1.0' encoding='UTF-8'?>

<!-- WSDL file generated by Zend Studio. -->

<definitions name="server" targetNamespace="urn:server" xmlns:typens="urn:server" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
    <message name="hello">
        <part name="qui" type="xsd:string"/>
    </message>
    <message name="helloResponse">
        <part name="helloReturn" type="xsd:string"/>
    </message>
    <portType name="MonWebServicePortType">
        <operation name="hello">
            <documentation>
                Dis bonjour...
            </documentation>
            <input message="typens:hello"/>
            <output message="typens:helloResponse"/>
        </operation>
    </portType>
    <binding name="MonWebServiceBinding" type="typens:MonWebServicePortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="hello">
            <soap:operation soapAction="urn:MonWebServiceAction"/>
            <input>
                <soap:body namespace="urn:server" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </input>
            <output>
                <soap:body namespace="urn:server" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
            </output>
        </operation>
    </binding>
    <service name="serverService">
        <port name="MonWebServicePort" binding="typens:MonWebServiceBinding">
            <soap:address location="http://localhost/webservice/index.php"/>
        </port>
    </service>
</definitions>


Remplacez donc http://localhost/webservice/index.php par l'adresse ou votre classe de webservice est disponible.

Télécharger l'exemple de Webservice PHP5

webservice.zip 1,38 kB

Ce fichier contient

  • index.php : la classe du webservice
  • server.wsdl : le fichier WSDL
  • test.php : Un test utilisant SoapClient

Articles connexes

Commentaires

Re : Question

Mardi 29 Juin 2010 23:51:06 - Stéphane Le Merre

Bonjour,

Je comprends mal la question, il suffit d'un serveur web avec PHP pour créer ou interroger un webservice, depuis PHP5, SOAP est inclut dans le package il me semble (http://fr2.php.net/manual/fr/soapclient.construct.php). Que souhaitez-vous tester, un client webservice ou un serveur ?

Question

Mardi 29 Juin 2010 23:30:02 - Eric

Bonsoir,
J'ai une question toute simple : comment faire pour tester en local un webservice ? Est-ce possible ? Je pose la question car mon héberggeur ne dispose pas de SOAP.
Je suis intéressé pour avoir un retour sur ce point

Bravo pour le site en tout cas, très utile !

Les commentaires sont tous validés par un modérateur, votre commentaire n'apparaît pas directement sur le site.
Aucun support n'est assuré ici, vous pouvez néanmoins laisser vos remarques et critiques sur l'article, les points de vue pertinents sont toujours les bienvenus.

Votez pour cet article

Vote: 4,36/5
(Nombre de votant(s) : 11)

Traduction automatique

Recherche

Ligams © 2009 tous droits réservés - Contact | Aide à la navigation | Plan du site | Glossaire | Infos légales | Accessibilité