De nombreuses organisations ont adopté Apache et PHP comme environnement d'application Web. Adopter PHP en mode Web services peut paraître difficile. Mais en fait, avec NuSoap, vous pouvez facilement utiliser PHP pour créer un client et un serveur SOAP.
Pour illustrer comment utiliser NuSoap et PHP pour créer des services Web, nous donnerons un exemple simple. Cet exemple d'application se compose d'un serveur et d'un client de services Web PHP. Il implémentera deux fonctions : inverser l'ordre des caractères dans une chaîne et trouver la somme de deux nombres.
Serveur PHP SOAP La configuration d'un serveur SOAP est très simple avec PHP et NuSoap. Fondamentalement, il vous suffit d'écrire les fonctions que vous souhaitez exposer à vos services Web et de les enregistrer auprès de NuSoap.
OK, deux étapes supplémentaires sont nécessaires pour terminer la mise en place du serveur PHP SOAP. Vous devez d'abord créer une instance de l'objet NuSoap dans votre code PHP, puis utiliser la méthode HTTP POST pour transmettre les données brutes à NuSoap pour traitement. Cela semble simple ? Jetons d'abord un coup d'œil au listing 1.
Liste 1 : soapfunc.php
<?
require_once('nusoap.php');
fonction inverse ($str){
$retval = "";
si(strlen($str) < 1) {
return new soap_fault('Client','','Chaîne invalide');
}
pour ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
retourner $retval ;
}
fonction add2numbers($num1, $num2) {
if (trim($num1) != intval($num1)) {
return new soap_fault('Client', '', 'Le premier numéro n'est pas valide');
}
if (trim($num2) != intval($num2)) {
return new soap_fault('Client', '', 'Le deuxième numéro n'est pas valide');
}
retourner ($num1 + $num2);
}
?>
Le listing 1 donne le fichier source de soapfunc.php. Ce fichier contient deux fonctions que nous souhaitons exposer aux services Web via le protocole SOAP : reverse et add2numbers, qui sont le cœur de notre application de services Web. La fonction reverse prend un argument, inverse l'ordre des caractères dans la chaîne et le renvoie.
Liste 2 : soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = nouveau serveur_soap ;
$soap->register('inverse');
$soap->register('add2numbers');
$soap->service($HTTP_RAW_POST_DATA);
?>
Le listing 2 illustre l'utilisation des fonctions d'enregistrement NuSoap et l'appel des gestionnaires SOAP. Comme vous le voyez, enregistrer vos deux fonctions (dans soapfunc.php) et transmettre les données POST à l'objet soap_server est aussi simple que de créer une nouvelle instance de l'objet soap_server. L'objet soap_server examinera les données POST et déterminera quelle fonction appeler, puis transmettra les paramètres à cette fonction PHP. Les données renvoyées par la fonction PHP sont reconditionnées dans une réponse SOAP et livrées au client SOAP demandant le service.
Client SOAP PHP Maintenant que nous avons créé un serveur SOAP utilisant NuSoap et PHP, nous devons le tester. Tout comme nous avons créé un programme serveur SOAP, nous pouvons utiliser NuSoap pour créer un programme client SOAP en PHP. Le listing 3 donne le programme source du programme client PHP SOAP.
Maintenant que nous avons créé un serveur SOAP utilisant NuSoap et PHP, nous devons le tester. Tout comme nous avons créé un programme serveur SOAP, nous pouvons utiliser NuSoap pour créer un programme client SOAP en PHP. Le listing 3 donne le programme source du programme client PHP SOAP.
Liste 3 : soapclient.php
<?
include('nusoap.php');
$client = new soapclient('http://localhost/soapserver.php');
$str = "Cette chaîne sera inversée";
$params1 = array('str'=>$str);
$inversé = $client->call('reverse',$params1);
echo "Si vous inversez '$str', vous obtenez '$reversed'<br>n" ;
$n1 = 5 ;
$n2 = 14 ;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$ajouté = $client->call('add2numbers', $params2);
echo "Si vous ajoutez $n1 et $n2, vous obtenez $added<br>n";
?>
Afin d'utiliser un programme client PHP sur un serveur SOAP, vous devez faire trois choses. Tout d’abord, vous devez créer un objet soapclient. L'objet soapclient est responsable de la gestion du regroupement des paramètres et du protocole SOAP. soapclient nécessite un paramètre qui doit être une URL. Cette URL peut pointer vers un point de terminaison HTTP ou une description WSDL du serveur SOAP réel. Dans notre cas, il s'agit d'une URL pointant vers notre serveur PHP SOAP.
Lorsque vous appelez une fonction nécessitant des paramètres, vous devez d’abord créer un tableau de paramètres contenant un ensemble de paires clé-valeur. La clé est le nom du paramètre et la valeur est la valeur du paramètre.
Lorsque vous devez appeler une fonction, vous utilisez l'objet soapclient pour l'appeler et transmettre deux paramètres. Le premier paramètre est le nom de la fonction que vous souhaitez appeler et le deuxième paramètre est un tableau contenant les paramètres de la fonction SOAP. La fonction appelante renverra la valeur de la fonction SOAP que vous avez appelée.
Pour exécuter cet exemple, entrez simplement l'URL de soapclient.php dans votre navigateur Web. Vous obtiendrez un résultat similaire à :
Si vous inversez "Cette chaîne sera inversée", vous obtenez "desrever eb lliw gnirts sihT" Si vous ajoutez 5 et 14, vous obtenez 19