PHP web services : comment créer un service web php avec soap

Cet article est un petit pense bête pour expliquer simplement comment créer un service web. Nous allons donc voir comment retourner un tableau d’informations en php.
1 – telecharger la librairie NuSOAP
2 – Création de l’objet serveur et définition de l’objet à renvoyer dans la réponse, notre tableau
/**
* Coté serveur
*
*/
<?php
// on inclut la librairie que l'on a téléchargé
include('lib/nusoap.php');
//on crée l'objet server
$serveur = new soap_server;</code>
$serveur->wsdl->addComplexType(
'Contact',
'complexType',
'struct',
'all','',
array(
'nom' => array('name' => 'nom', 'type' => 'xsd:string'),
'prenom' => array('name' => 'prenom', 'type' => 'xsd:string'),
'web' => array('name' => 'web', 'type' => 'xsd:string'),
'tel' => array('name' => 'tel', 'type' => 'xsd:int'),
)
);
$serveur->wsdl->addComplexType(
'ContactArray',
'complexType',
'array','',
'SOAP-ENC:Array',array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Contact[]')
),
'tns:Contact'
);
// on définit la méthode qui sera appelé par le client
$serveur->register('getContacts',
array(), //pas de paramètre en entré
array('Contact' => 'tns:ContactArray')
);
// on implémente la méthode
function getContacts() {
$result = array();
$req="SELECT * FROM `Contacts`";
$res=mysql_query($req);
while($obj=mysql_fetch_object($res)) {
$result[] = array( 'nom' => $obj->nom, 'prenom' => $obj->prenom,'email'=>$obj->email, 'tel'=>$obj->tel);
}
return $result;
}
?>
et l’appel coté client
<?php
/**
* Coté client
*
*/
require_once('lib/nusoap.php');
// url du fichier qui contient le code que l'on a définit juste avant
$serverpath ='http://url-vers-le-fichier-php-du-web-service';
$client = new soapclient($serverpath);</code>
// on appelle la fonction get client
$result = $client->call('getContacts');
// on affiche la requete
print($client->request);
?>
Pour cet article, j’ai complété cette source : www.jkraft.fr
