Les webServices en PHP5 sous le framework Zend.
Par Draggi le mardi, mars 8 2011, 15:39 - PHP - Lien permanent
Quelques 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="";
}
?>