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

Site membre du réseau Izardev et LCNET

CodeIgniter v2 et Webservice avec ZendFramework

Dans un article plus ancien, j'avais expliqué comment créer des webservices avec CodeIgniter v1.7 en utilisant le Framework Zend pour générer le WSDL. CodeIgniter v2 est sorti entre temps, si le principe n'a pas réellement changé, voici tout de même comment créer un Webservice avec CodeIgniter v2 et ZF.

Import des fichiers Zend

Tout d'abord téléchargez les fichiers du framework Zend (les composants minimaux). Si vous n'êtes pas à l'aise avec la configuration de PHP et les include_path, vous pouvez placer le dossier Zend à la racine de votre application CodeIgniter :

De la même manière que pour codeigniter v1.7, créons maintenant la classe webservice.

Création du webservice

Nous créons le webservice dans le répertoire /application/soap ( /application/soap/soapservertest.php ).

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
class soapservertest
{
    var $ci;
    /**
     * Méthode très intéressante
     * @return string
     */
    function HelloWorld()
    {
        return "Hello World";
    }
    /**
     * Dis bonjour à quelqu'un
     * @param string $someone
     * @return string
     */
    function SayHelloToSomeOne($someone)
    {
        return "Hello $someone";
    }
    /**
     * Renvoi un tableau
     * @return array
     */
    function getWebsites()
    {
        return array('http://www.ligams.com','http://ligams.net');
    }
    /**
     * Appelle la base de donnée du site
     * @return string
     */
    function callSomethingInDataBase()
    {
        $this->ci =& get_instance();
        $this->ci->load->model('XXXXXX');
        $users = $this->ci->XXXXXX->selectAll();
        return json_encode($users);
    }
}
?>

Je ne reviens pas la dessus, il faut commenter cette classe, c'est grâce aux commentaires que sera généré le fichier WSDL, descripteur du webservice. Vous pouvez en savoir plus sur ce fichier en vous reportant à l'article Création de webservices en PHP.

Création du controller Webservice

Pas de différence avec CI v 1.7 :

<?php

require('Zend/Soap/Server.php');
require('Zend/Soap/AutoDiscover.php'); 
require('Zend/Soap/Server/Exception.php');
/**
 * Description of webservice
 * @author Stéphane
 */
class webservice extends MY_Controller {
    function serve($class,$wsdl = null)  
    {  
        /* 
         * sous-entend que vous placez vos classes webservice class dans le répertoire soap de votre app 
         * et qu'il est nommé NOMDEVOTRE WEBSERVICE.php 
         */  
        $path = APPPATH.'soap/'.$class.'.php';  
        if(file_exists($path))  
        {  
            require_once($path);  
            if($wsdl=='wsdl')  
            {  
                ini_set("soap.wsdl_cache_enabled",0);  
                $wsdl = new Zend_Soap_AutoDiscover();  
        $wsdl->setUri(base_url().get_class($this).'/serve/'.$class);  
                $wsdl->setClass($class);  
                $wsdl->handle();  
            }  
            else  
            {  
                $szWSDLUrl = base_url().get_class($this).'/serve/'.$class.'/wsdl';  
                $options = array('soap_version' => 2);  
                $server = new Zend_Soap_Server($szWSDLUrl,$options);  
                $server->setClass($class);  
                $server->handle();  
            }  
        }  
        else  
        {  
            show_404();  
        }  
    }
}

?>

Et voilà votre webservice crée avec CodeIgniter V2 !

Partagez cet article !

  • Delicious
  • Stumbleupon
  • Digg
  • Facebook
  • Google
  • Linkedin
  • Yahoo Buzz
  • Twitter
Vous avez apprécié cet article ?

Commentaires S'abonner au flux RSS des commentaires

Ajouter un commentaire

Les commentaires sont tous validés par un modérateur, votre commentaire n'apparaît pas directement sur le site.
Aucun support n'est assuré ici, vous pouvez néanmoins laisser vos remarques et critiques sur l'article, les points de vue pertinents sont toujours les bienvenus.