Aller au contenu | Aller au menu | Aller à la recherche

Les webServices en PHP5 sous le framework Zend.

zend-framework-logoQuelques point important lorsque vous implémentez un web services sous PHP5 avec le framework Zend.




Configuration de WAMP

Commencez par désactiver les caches dans le php.ini de votre serveur WAMP:

soap.wsdl_cache_enabled=0

Un service avec un type simple

<?php
ini_set("soap.wsdl_cache_enabled", 0);
require_once 'Zend/Soap/AutoDiscover.php';
require_once 'Zend/Soap/Server.php';
// Set error reporting
error_reporting(E_ALL|E_STRICT);

if(isset($_GET['wsdl']))
{
    $wsdl = new Zend_Soap_AutoDiscover();
    $wsdl->setClass('testWsvc');
    $wsdl->handle();
}
else
{
    $options = array("uri"=>"http://localhost/test/application/services/wsvc.php?wsdl");
    $server = new Zend_Soap_Server(null,$options);
    $server->setClass('testWsvc');
    $server->handle();
}

class testWsvc
{
    /**
    * This function return the text 'Hello Word'
    * @return string
    */
    public function getHello()
    {
        return 'Hello Word';
    }   
}
?>

wsvc.php se trouvant dans le répertoire /application/services/.

Les commentaires "Doc Comment" (avant la méthode) sont très important surtout pour les types complexes. En effet ils permettent à l'AutoDiscover de générer le bon WSDL.

Un service renvoyant un type complexe et un tableau

<?php
ini_set("soap.wsdl_cache_enabled", 0);
require_once 'Zend/Soap/AutoDiscover.php';
require_once 'Zend/Soap/Server.php';
// Set error reporting
error_reporting(E_ALL|E_STRICT);

if(isset($_GET['wsdl']))
{
    $wsdl = new Zend_Soap_AutoDiscover();
    $wsdl->setClass('testWsvc');
    $wsdl->handle();
}
else
{
    $options = array("uri"=>"http://localhost/test/application/services/wsvc.php?wsdl");
    $server = new Zend_Soap_Server(null,$options);
    $server->setClass('testWsvc');
    $server->handle();
}

class testWsvc
{
    /**
    * This function return the text 'Hello Word'
    * @return string
    */
    public function getHello()
    {
        return 'Hello Word';
    }

    /** Cette fonction retourne un tableau de string
    * @return Array
    */
        public function getFruits()
        {
            return array('apple', 'orange', 'banana');
        }

    /**
    * Cette fonction retourne un objet personne
    * @param string $id
    * @return personne
    */
    public function getPersonne($id)
    {
        $mapersonne = new personne();
        $mapersonne ->nom="toto";
        $mapersonne ->prenom="titi";
        $mapersonne ->adresse="rue de ma rue";
        $mapersonne ->ville=null;
        return $mapersonne;
       
    }
   
}

class personne
{
    public $nom="";
    public $prenom="";
    public $adresse="";
    public $codePostal="";
    public $ville="";   
}
?>





Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet