New file |
0,0 → 1,90 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* CLI permet de récupérer les paramètres passés en ligne de commande pour instancier une classe héritant de la classe abstraite |
* Script. |
* Elle va déclencher l'éxecution du script via l'appel de la méthode executer(). |
* C'est une Singleton. |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Delphine CAUQUIL <delphine@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 |
* @version SVN : $Id$ |
* @link /doc/framework/ |
*/ |
|
class Cli { |
|
/** |
* Execute la ligne de commande en récupérant le nom du script à lancer et ses paramètres. |
* Instancie la classe du script à lancer et appelle la méthode executer(). |
* @return void |
*/ |
public static function executer() { |
if ($_SERVER['argc'] < 2){ |
trigger_error("Erreur: vous n'avez pas indiqué le nom du script. Voir '".$_SERVER['argv'][0]." help'.\n", E_USER_ERROR); |
} |
|
// Récupération de la ligne de commande |
$argv = $_SERVER['argv']; |
// Nous dépilons le nom du fichier qui initialise le framework et appele cette méthode. |
array_shift($argv); |
// Nous dépilons le nom du script à lancer |
$script = array_shift($argv); |
// Récupération des paramètres d'execution du script |
$parametres = self::getParametres($argv); |
|
// Chargement du script à lancer |
$Script = Cli::charger($script, $parametres); |
if (!is_null($Script)) { |
$Script->executer(); |
} |
|
// Affichage des exceptions et erreurs générées par le script |
echo GestionnaireException::getExceptions(); |
|
// Fin d'execution |
exit(0); |
} |
|
private static function charger($script_nom, $parametres) { |
$Script = null; |
|
$classe_nom = implode('', array_map('ucfirst', explode('_', strtolower($script_nom)))); |
$fichier_script = Config::get('chemin_modules').$script_nom.DS.$classe_nom.'.php'; |
|
if (!file_exists($fichier_script)){ |
trigger_error("Erreur : script '$fichier_script' inconnu!\n", E_USER_ERROR); |
} else { |
require_once $fichier_script; |
if (!class_exists( $classe_nom)) { |
trigger_error("Erreur: impossible de trouver la classe de la commande : $classe_nom\n", E_USER_ERROR); |
} else { |
$Script = new $classe_nom($script_nom, $parametres); |
} |
} |
return $Script; |
} |
|
private static function getParametres($argv) { |
$parametres = array(); |
// Récupération des options |
while (count($argv)) { |
if (isset($argv[1]) && $argv[1]{0} != '-') { |
$param = array_shift($argv); |
$parametres[$param] = array_shift($argv); |
} elseif (!isset($argv[1]) || $argv[1]{0} == '-') { |
$parametres[array_shift($argv)] = null; |
} else { |
trigger_error("Erreur: valeur manquante pour le paramêtre '".$argv[0]."' \n", E_USER_ERROR); |
} |
} |
return $parametres; |
} |
|
} |
?> |