Subversion Repositories eFlore/Applications.cel

Rev

Rev 1146 | Blame | Last modification | View Log | RSS feed

<?php
/**
* Script d'appel aux fonctions de jrest par ligne de commande, pour le moment ne supporte pas 
* correctement les méthodes ayant des paramètres  
* 
*/


/**
* La fonction __autoload() charge dynamiquement les classes trouvées dans le code.
*
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
*
*@param string le nom de la classe appelée.
*@return void le fichier contenant la classe doit être inclu par la fonction.
*/
function __autoload($classe)
{
        if (class_exists($classe)) {
                return null;
        }
        
        $chemins = array('', 'services/', 'services/include/', 'lib/');
        foreach ($chemins as $chemin) {
                $chemin = $chemin.$classe.'.php';
                if (file_exists($chemin)) {
                        require_once $chemin;
                }
        }
}

if(php_sapi_name() == 'cli') {
        
                if ($_SERVER['argc'] < 2){
                   trigger_error("Erreur: vous n'avez pas indiqué le nom du service à appeler.");
                   exit;
                }
                
                // suppression du premier paramètre qui est le nom du script
                array_shift($argv); 
                
                $nom_service = array_shift($argv);
                                
                if ($_SERVER['argc'] < 2){
                   trigger_error("Erreur: vous n'avez pas indiqué le nom de la méthode");
                   exit;
                }
                
                $nom_methode = array_shift($argv);
                
                $params = $argv;
                $_SERVER['SERVER_NAME'] = 'localhost';
                
                $config =  parse_ini_file('jrest.ini.php', TRUE);
                $service = new $nom_service($config);
                
                if(!is_callable(array($service, $nom_methode))) {
                        trigger_error("Erreur: la méthode ".$nom_methode." n'existe pas ou n'est pas accessible");
                        exit;
                }
                
                // exécution de la méthode
                $service->$nom_methode($params);
                
                exit;
} else {
        trigger_error("Erreur: ce fichier est destiné a être appelé en ligne de commande.");
        exit;
}
?>