»
S
I
D
E
B
A
R
«
Saint-Valentin 2010
fév 15th, 2010 by Christopher Henry

Encore …
jan 29th, 2010 by Christopher Henry

Ragotte, le hamster expulsé !!!
jan 29th, 2010 by Christopher Henry

Que du bonheur !!!

depeche-afp.mp3

Source AFP (Agence Française de Presse)

Créer un web service avec Zend Framework
jan 21st, 2010 by Christopher Henry

Pour commencer revenons un petit peu sur les web services. Qu’est ce que c’est ? À quoi ça sert ? Comment ça marche ?

À travers les lignes qui suivent je vais essayer de vous faire comprendre l’utilité de tout ça. Commençons avec une petite définition de ce terme, d’après Wikipedia :

Un service web est un programme informatique permettant la communication et l’échange de données entre applications et systèmes hétérogènes dans des environnements distribués. Il s’agit donc d’un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, et en temps réel.

(Source http://fr.wikipedia.org/wiki/Service_Web)

En gros ça permet à des applications hétérogènes, il faut entendre par ce terme programmées dans plusieurs langages différents, de partager des informations en utilisant des protocoles en commun :

  • WSDL : c’est un fichier de description du WS écrit en XML
  • SOAP : un des protocoles permettant la communication entre 2 applications (il existe aussi par exemple le protocole REST)

Rentrons dans le vif du sujet, pour créer un WS, nous avons vu qu’il nous fallait un fichier appelé WSDL, il existe plusieurs façons de le faire, vous pouvez par exemple utiliser Zend Studio (Logiciel Payant), mais nous allons voir comment le faire encore plus simplement en utilisant Zend Framework.

(ce tutoriel est basé sur la version 1.9.7 de Zend Framework disponible sur le site de Zend)

Pour ce faire nous allons créer une classe PHP TestWS.php


< ?php

class TestWS{

}

?>

Pour le moment rien de compliqué, nous allons maintenant ajouter 2 méthodes à l’intérieur, une première qui devra nous renvoyer « Hello Word » et la seconde qui nous renverra le texte qu’on lui aura passé en paramètre.


< ?php

class TestWS{

public function getHello(){

return 'Hello Word';

}

public function getMyText($text){

return $text;

}

}

?>

Utilisons maintenant la PHPDoc pour commenter un peu notre code, c’est aussi grâce à la PHPDoc que ZF va pouvoir générer à notre place le fichier WSDL.


< ?php

class TestWS{

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

return 'Hello Word';

}

/**
* This function return the text in $text
* @param string $text
* @return string
*/
public function getMyText($text){

return $text;

}

}

?>

Maintenant il nous faut utiliser le Framework Zend, dans mon cas je l’utilise comme « Boîte à outils », je vais donc inclure les fichiers nécessaires à cette démonstration.


< ?php
ini_set("soap.wsdl_cache_enabled", "0");
require_once 'Zend/Soap/AutoDiscover.php';
require_once 'Zend/Soap/Server.php';

class TestWS{

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

return 'Hello Word';

}

/**
* This function return the text in $text
* @param string $text
* @return string
*/
public function getMyText($text){

return $text;

}

}

?>

Pour une question de pratique, je vais proposer mon WS directement sur ma classe, mais vous pouvez très bien les proposer à travers un autre fichier.

Nous allons maintenant créer « Le serveur de Web Service » pour rendre notre WS disponible, vous allez voir c’est assez simple.


< ?php
ini_set("soap.wsdl_cache_enabled", "0");
require_once 'Zend/Soap/AutoDiscover.php';
require_once 'Zend/Soap/Server.php';
require_once 'Zend/Soap/Client.php';

if(isset($_GET['wsdl'])) { // On aura accès à mon WS à l'adresse http://MonServeur/test.php?wsdl
$wsdl = new Zend_Soap_AutoDiscover();
$wsdl->setClass('TestWS'); // Il faut ajouter le nom de la classe
$wsdl->handle();
}else {
$server = new Zend_Soap_Server('http://MonServeur/test.php?wsdl');
$server->setClass('TestWS');
$server->handle();
}

class TestWS{

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

return 'Hello Word';

}

/**
* This function return the text in $text
* @param string $text
* @return string
*/
public function getMyText($text){

return $text;

}

}

?>

Si nous nous rendons à l’adresse http://MonServeur/TestWs.php?wsdl, nous pourrons visualiser notre Web Service.

Notre Web Service est maintenant en place, il ne nous reste plus qu’à le consommer (l’utiliser), nous allons donc créer un fichier client.php et inclure les librairies de ZF dont nous avons besoin.


< ?php
require_once 'Zend/Soap/Client.php';

try {
$client = new Zend_Soap_Client('http://MonServeur/TestWS.php?wsdl');

}
catch(Zend_Exception $e) {
echo $e->getMessage();
}

?>

Nous avons maintenant notre code de base pour consommer notre WS, nous pouvons par exemple demander la liste complète des fonctions disponibles via ce web service avec la fonction suivante ;


$client->getFunctions();

et on aura la réponse suivante :

Array
(
[0] => string getHello()
[1] => string getMyText(string $text)
)

Appelons maintenant nos fonctions.


< ?php
ini_set("soap.wsdl_cache_enabled", "0");
require_once 'Zend/Soap/Client.php';

try {
$client = new Zend_Soap_Client('http://MonServeur/TestWS.php?wsdl');
print($client->getHello());
print('<br />');
print($client->getMyText('Je veux mon texte'));
}
catch(Zend_Exception $e) {
echo $e->getMessage();
}

?>

et nous aurons la réponse suivante :


Hello Word
Je veux mon texte

J’espère que ces lignes vous aideront, à très vite pour de nouveaux tutoriels.

Bonne Année
déc 31st, 2009 by Christopher Henry

Je vous présente mes meilleurs vœux pour cette nouvelle année

A venir prochainement
déc 16th, 2009 by Christopher Henry

Histoire de mettre quelques infos sur ce blog, je suis en train de vous préparer une série de tutoriaux sur PHP et Zend Framework :

  • Création d’un mini-cms
  • Création et utilisation de webservices
FrogSoft
déc 16th, 2009 by Christopher Henry

Logo FrogSoft

Et voilà c’est fait. Notre petite société viens d’ouvrir au Québec

Super petite animation
déc 1st, 2009 by Christopher Henry

Canadiens vs Washington
déc 1st, 2009 by Christopher Henry

Beau match malgré une défaite, mais bon j’ai vu jouer un de mes joueurs favoris donc tout va bien … :-)

La suite très vite

Petite Note
oct 22nd, 2009 by Christopher Henry

Pour ceux qui pensent qu’il ne neige pas à Montréal voici une petite vidéo qui vous démontre le contraire

Je ne ferai pas plus de commentaire …. :-) mis à part qu’il ne neige pas partout !!!!

»  Substance: WordPress   »  Style: Ahren Ahimsa
© Christopher Henry