Généralités : Les Web Services et PHP
SOAP, WSDL, WTF?
SOAP veut dire Simple Object Access Protocol, c'est un protocole permettant d'appeler des procédures distantes. Il se base sur XML.
WSDL : Web Services Description Language. Il s'agit d'un ficher XML regroupant la description des élements permettant d'accéder au WebServices.
Plus d'infos sont disponible sur Wikipedia : Article SOAP, Article WSDL
Les différentes implémentation de SOAP en PHP
Il est possible de mettre en place et d'accéder à des Web Services SOAP avec différentes solutions.
La classe la plus populaire, en PHP4, fut NuSOAP. Elle est toujours fonctionnelle et à pour avantage d'effectuer la génération automatique du fichier WSDL, Le développement n'est par contre plus actif.
Autre classe intéressante, Pear::Soap, qui permet de créer et d'utiliser les Web Services SOAP en PHP4 et PHP5. Le développement est toujours actif, mais la classe est toujours en version béta. Pour plus d'infos je vous invite à consulter ce tutoriel.
PHP intègre désormais une extension SOAP permettant d'écrire des clients et serveur SOAP. C'est cette dernière extension qui a été choisi pour être utilisé dans le module WSServer de Copix.
Extension PHP SOAP
Apparu avec PHP5, l'extension SOAP permet d'écrire des serveurs et clients SOAP. Elle supporte une partie des spécifications SOAP 1.1, SOAP 1.2 et WSDL 1.1.
Les classes prédéfinies sont les suivantes : * SoapClient * SoapServeur * SoapFault * SoapHeader * SoapParam * SoapVar
Tous les détails se trouve sur le manuel de PHP.
Exemple
Exemple d'un client :
<?php
$client = new SoapClient("some.wsdl");
$arFunctions = $client->__getFunctions();
foreach ($arFunctions as $function) {
echo $function.'<br/>'."
";
}
?>
Exemple d'un serveur Soap
<?php
$server = new SoapServer ("some.wsdl");
$server->setClass("Foo");
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$server->handle();
} else {
echo "Ce serveur SOAP peut gérer les fonctions suivantes : ";
$functions = $server->getFunctions();
foreach($functions as $func) {
echo $func . "
";
}
}
class Foo {
function Add($x, $y);
}
?>
Problèmes
Pour l'instant l'extension Soap ne permet pas de générer un fichier WSDL. Pour celà le module de Copix utilise WSDL_Gen.php

