Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
774 aurelien 1
<?php
2
/**
3
* Script d'appel aux fonctions de jrest par ligne de commande, pour le moment ne supporte pas
4
* correctement les méthodes ayant des paramètres
5
*
6
*/
7
 
8
 
9
/**
10
* La fonction __autoload() charge dynamiquement les classes trouvées dans le code.
11
*
12
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
13
*
14
*@param string le nom de la classe appelée.
15
*@return void le fichier contenant la classe doit être inclu par la fonction.
16
*/
17
function __autoload($classe)
18
{
19
	if (class_exists($classe)) {
20
		return null;
21
	}
22
 
23
	$chemins = array('', 'services/', 'services/include/', 'lib/');
24
	foreach ($chemins as $chemin) {
25
		$chemin = $chemin.$classe.'.php';
26
		if (file_exists($chemin)) {
27
			require_once $chemin;
28
		}
29
	}
30
}
31
 
32
if(php_sapi_name() == 'cli') {
33
 
34
		if ($_SERVER['argc'] < 2){
35
		   trigger_error("Erreur: vous n'avez pas indiqué le nom du service à appeler.");
36
		   exit;
37
		}
38
 
39
		// suppression du premier paramètre qui est le nom du script
40
		array_shift($argv);
41
 
42
		$nom_service = array_shift($argv);
43
 
44
		if ($_SERVER['argc'] < 2){
45
		   trigger_error("Erreur: vous n'avez pas indiqué le nom de la méthode");
46
		   exit;
47
		}
48
 
49
		$nom_methode = array_shift($argv);
50
 
51
		$params = $argv;
52
 
53
		$config =  parse_ini_file('jrest.ini.php', TRUE);
54
		$service = new $nom_service($config);
55
 
56
		if(!is_callable(array($service, $nom_methode))) {
57
			trigger_error("Erreur: la méthode ".$nom_methode." n'existe pas ou n'est pas accessible");
58
			exit;
59
		}
60
 
61
		// exécution de la méthode
62
		$service->$nom_methode($params);
63
 
64
		exit;
65
} else {
66
	trigger_error("Erreur: ce fichier est destiné a être appelé en ligne de commande.");
67
	exit;
68
}
69
?>