Subversion Repositories Applications.projet

Rev

Rev 431 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
431 mathias 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
 
27
		if (file_exists($chemin)) {
28
			require_once $chemin;
29
		}
30
	}
31
}
32
 
33
if(php_sapi_name() == 'cli') {
34
 
35
		if ($_SERVER['argc'] < 2){
36
		   trigger_error("Erreur: vous n'avez pas indiqué le nom du service à appeler.");
37
		   exit;
38
		}
39
 
40
		// suppression du premier paramètre qui est le nom du script
41
		array_shift($argv);
42
 
43
		$nom_service = array_shift($argv);
44
 
45
		if ($_SERVER['argc'] < 2){
46
		   trigger_error("Erreur: vous n'avez pas indiqué le nom de la méthode");
47
		   exit;
48
		}
49
 
50
		$nom_methode = array_shift($argv);
51
 
52
		$params = $argv;
53
 
54
		$config =  parse_ini_file('jrest.ini.php', TRUE);
55
		$service = new $nom_service($config);
56
 
57
		if(!is_callable(array($service, $nom_methode))) {
58
			trigger_error("Erreur: la méthode ".$nom_methode." n'existe pas ou n'est pas accessible");
59
			exit;
60
		}
61
 
62
		// exécution de la méthode
63
		$service->$nom_methode($params);
64
 
65
		exit;
66
} else {
67
	trigger_error("Erreur: ce fichier est destiné a être appelé en ligne de commande.");
68
	exit;
69
}
70
?>