lindev : administration linux , développement php

Aller au contenu | Aller au menu | Aller à la recherche

27 oct. 2008

Introduction aux services web

C'est quoi un service web

Un service web , permet , à partir de votre propre programme (appli php par exemple ) d'effectuer une opération prise en charge par un serveur distant et qui distribue les informations à qui le souhaite ...

Exemple , je veux la météo sur lille , je vais demander au serveur X de me donner cette météo (température , levé et couché du soleil ect ..) pour la ville de lille .

Pour effectuer cela , nous allons utiliser le protocole soap .

Ce que je vais vous montrer

Le principe encore une fois , je ne vais pas aller dans le détail dans ce premier article .. par la suite pourquoi pas .. . Nous allons voir comment creer un service web distant , et nous allons nous connecter pour y récupérer les infos qu'il distribue.

Création du service

Nous allons creer notre service , ici , il s'agit de donner l'adresse ip du serveur distant qui propose un webservice ... rien de bien interessant , mais le but et de comprendre la mise en place d'un service web ...

Commençons donc à creer notre classe :

<?php
$wsdl	=	"sw.wsdl";

class sw{
	
	function affiche()
	{
		$info = "L'adresse ip du server distant est : $_SERVER[SERVER_ADDR]";
		return $info;
	}
}

$server	=	new SoapServer($wsdl);
$server->setClass("sw");
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
?>

Nous avons donc une classe sw avec la méthode affiche() qui retourne l'adresse ip du serveur .. le $wsdl dentifie le fichier wsdl qui vat permettre au client de savoir quelle fonctions sont disponibles , avec quels paramétres , et ce que chaque fonction va retourner ...

Nous n'allons pas entrer dans les détails pour la création du fichier wsdl , celui étant d'une complexité assez lourde si nous le faisons à la main .. Heureusement des utilitaires nous dispensent des ce travail .. a savoir , l'editeur ZendStudio (que j'utilise) , ou en gratuit , uml2php5 de dia expliqué dans un précédent billet ...

Voici donc ce fichier que j'ai nommé ws.wsdl :

<?xml version='1.0' encoding='UTF-8'?>

<!-- WSDL file generated by Zend Studio. -->

<definitions name="sw" targetNamespace="urn:sw" xmlns:typens="urn:sw" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
	<message name="affiche"/>
	<message name="afficheResponse">
		<part name="afficheReturn"/>
	</message>
	<portType name="swPortType">
		<operation name="affiche">
			<input message="typens:affiche"/>
			<output message="typens:afficheResponse"/>
		</operation>
	</portType>
	<binding name="swBinding" type="typens:swPortType">
		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="affiche">
			<soap:operation soapAction="urn:swAction"/>
			<input>
				<soap:body namespace="urn:sw" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
			</input>
			<output>
				<soap:body namespace="urn:sw" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
			</output>
		</operation>
	</binding>
	<service name="swService">
		<port name="swPort" binding="typens:swBinding">
			<soap:address location="http://soap.lindev.fr/sw.php"/>
		</port>
	</service>
</definitions>

Notez bien ici , que la ligne importante est : http://soap.lindev.fr/sw.php qui correspond à l'adresse ou se trouve le script qui contient les fonction décrites dans le fichier wsdl ..

Voilà , je met donc les fichiers suivants :

  • sw.php
  • sw.wsdl

sur le serveur distant pour qu'ils soient accessibles à cette adresse :

http://soap.lindev.fr

Le client

Pour le client , c'est encore plus simple ..

<?php

$wsdl = "http://soap.lindev.fr/sw.wsdl";

$client	=	new SoapClient($wsdl);

echo $client->affiche();

?>

Nous commençons par définir ou se trouve le fichier du service web à contacter .. ici : http://soap.lindev.fr/sw.wsdl Pius l'on instancie SoapClient avec comme argument , l'adresse du fichier wsdl ...

Grace à l'instance de SoapClient , nous avons de nombreuses possibilitées .. comme avoir des infos sur le web service , les fonctions disponibles ect ...

Ici nous executons juste la méthode distante affiche() qui nous renvoie l'adresse ip du serveur ...

Et voilà nous avons creé un service web ... bon ok ce service est vraiment peut utile , mais le principe reste le même pour des requêtes plus complexes .

Si vous avez des questions , n'hésitez pas , en me contacter ..

Lien de ressources : fonctions SOAP

18 oct. 2008

UML & PHP5

dia_logo.png
Générer du code PHP5 à partir de modélisation UML

 

   Voilà quelque chose qui n'est pas vraiment répendu et pourtant si pratique ... 

   Dans un premier temps , il vous faut installer le logiciel DIA :

sudo apt-get install dia

 

   Ensuite , nous allons télécharger le modules complémentaire nous permettant de gérer le PHP

   Vous pouvez consulter le site : http://uml2php5.zpmag.com pour plus d'informations

   Le module se trouve ici uml2php5

   Décompressez le , vous aller vous retrouver avec  5 fichiers et 1 repertoire

dia-uml2php5.conf.xsl

dia-uml2php5.zx

dia-uml2phpsoap.zx 

dia-uml-classes.zx

stylesheets.xml

TOOLS

 

   Copiez tout les fichiers dans le repertoire XSLT de DIA ( pour moi "ubuntu" /usr/share/dia/xslt/

sudo cp /home/cdsl/Bureau/uml2php5-2.2.0/*.* /usr/share/dia/xslt/

    Vous pouvez maintenant lancer dia et creer vos diagrammes UML

   Enregistrez vos diagrammes dans le repertoire de votre choix , puis exportez vos fichiers en selectionnant le filtre

XSL *.code 

   Une boite de dialogue s'ouvre 

   Selectionner UML-CLASSES-EXTENDED 

   puis PHP5 

   Et enfin , validez .

 

Dia creé tout les fichiers PHP dans le repertoire ou se trouve les fichiers DIA .

Aller à vos diagrammes .. Cool