Retour : page principale > sommaire applications générales > Documentation TBF

TBFramework - Cli & Script

Les classes Cli et Script sont utilisées lors de développement de code en lignes de commande.
Le projet doit alors avoir l'arborescence de scripts CLI où le fichier cli.php appelle la classe Cli et les scripts (contenus dans les modules) implémentent la classe Script.
Pour lancer le script, il faut taper en ligne de commande /opt/lampp/bin/php cli.php mon_script -a test -v 3.

Cli
La classe Cli exécute la ligne de commande en récupérant le nom du script à lancer (mon_script) et ses paramètres ({'-a'=>'test', '-v'=>'1'}) afin d'instancier la classe de ce script et d'appeler sa méthode executer().
C'est une Singleton.
Le nom du module contenant la classe script doit ĂŞtre saisi en minuscule.

Le paramètre action -a est obligatoire pour tous les scripts, le paramètre verbeux -v est défini par défaut à 1. Si on veut définir d'autres paramètres, il faut ajouter dans le script un tableau $parametres_autorises, construit selon la forme suivante :
  • clĂ© = nom du paramètre '-foo'
  • value = contient un nouveau tableau composĂ© de cette façon :
    • boolĂ©en: true si le paramètre est obligatoire
    • boolĂ©en ou var : true si le paramètre nĂ©cessite une valeur Ă  sa suite ou la valeur par dĂ©faut
    • string : description du contenu du paramètre
protected $parametres_autorises = array(
  • '-y' => array(false, 'exemple de valeur par dĂ©faut', 'Un paramètre supplĂ©mentaire de test'));

Scripts
La classe Script est une classe abstraite.

Paramètres de la ligne de commande

  • La fonction getScriptNom() retourne le nom du script.
  • La fonction getScriptChemin($doit_exister) prend en paramètre le boolĂ©en $doit_exister afin de tester si le script existe et retourne la cas Ă©chĂ©ant le chemin pour accĂ©der au script.
  • La fonction getParametre($parametre) prend en paramètre la clĂ© d'un paramètre et retourne la valeur du paramètre demandĂ©e. ex. getParametre(-a) retourne test.

Affichage d'informations

Des constantes de niveaux d'informations sont définies dans la classe Script et on peut choisir le niveau à partir duquel on souhaite afficher ces informations dans la console à l'aide du paramètre -v (mode verbeux : 1, 2, 3) en ligne de commande. L'information est toujours écrite dans le fichier log.
MSG_LOG = 0
MSG_ERREUR = 1
MSG_AVERTISSEMENT = 2
MSG_INFO = 3

Plusieurs fonctions permettent de créer des messages d'informations selon leur niveau d'importance.
  • La fonction traiterErreur($message, [$tab_arguments]) prend en paramètres un message d'erreur avec des %s et un tableau des paramètres Ă  insĂ©rer dans le message d'erreur. Elle affiche un message d'erreur formatĂ© dans la console quand v >= 1.
  • La fonction traiterAvertissement($message, [$tab_arguments]) prend en paramètres un message d'erreur avec des %s et un tableau des paramètres Ă  insĂ©rer dans le message d'erreur. Elle affiche un message d'avertissement formatĂ© dans la console quand v >= 2.
  • La fonction traiterInfo($message, [$tab_arguments]) prend en paramètres un message d'erreur avec des %s et un tableau des paramètres Ă  insĂ©rer dans le message d'erreur. Elle affiche un message d'avertissement formatĂ© dans la console quand v >= 3.
Ces trois fonctions utilisent la fonction formaterMsg($message, [$tab_arguments, $niveau]) qui prend en paramètres un message d'erreur avec des %s, un tableau des paramètres à insérer dans le message d'erreur et un niveau d'erreur et retourne un message d'information formaté.

Dans une boucle, la fonction afficherAvancement($message, [$depart]) prend en paramètres un message d'information et le nombre de départ à afficher et affiche le nombre de tour de boucle effectué.


private function executerTest() {
  • /* Test de l'affichage des messages d'informations */
  • print("test rĂ©ussi!\n");
  • print('Config: '.Config::get('param1')."\n");
  • $this->traiterErreur("Un msg d'%s", array('erreur'));
  • $this->traiterErreur("Un msg d'erreur sans paramètre");
  • $this->traiterAvertissement("Un msg d'%s", array('avertissement'));
  • $this->traiterAvertissement("Un msg d'avertissement sans paramètre");
  • $this->traiterInfo("Un msg d'%s", array('info'));
  • $this->traiterInfo("Un msg d'info sans paramètre");
  • echo $this->formaterMsg("Un msg %s", array('formatĂ©'));
  • echo $this->formaterMsg("Le parametre y : %s", array($this->getParametre('y')));
  • /* Test de l'affichage de l'avancement dans une boucle en partant de 1 */
  • $ma_liste = array();
  • for ($i = 0; $i < 1000; $i++) {
    • $ma_liste[] = $i;
    • for ($j = 0; $j < 100; $j++) {
      • $ma_liste[] = "$i-$j";
      • /* 1 seule boucle peut ĂŞtre affichĂ©e */
    • }
    • $this->afficherAvancement("Afficher de l'avancement de la boucle for", 1);
  • }
  • echo "\n";
  • /* Test de l'affichage de l'avancement dans une boucle en partant par dĂ©faut de 0 */
  • foreach ($ma_liste as $cle => $valeur) {
    • $this->afficherAvancement("Afficher de l'avancement de la boucle foreach");
  • }
  • echo "\n";
}