Télécharger
cli.class.php (version : 1.0.2)
Dimanche 29 Novembre 2020 par Loïc Doumerc
Le principe du PHP-CLI (Command-Line Interface) est de pouvoir utiliser PHP en dehors d'un serveur web et surtout en mode console.
Pratique pour créer un deamon ou un script plus rapide à développer en PHP que dans un autre langage.
Les prérequis
- Installer PHP (déjà installé si vous avez un serveur web de test)
- Avoir inclus le dossier PHP dans les variables d'environnement
- Un script à éxécuter ;)
Inclure PHP dans les variables d'environnement
Les méthodes
cmd_print
Affiche du texte dans la console
Description
cmd_print(string $string[, string $align = 'L'[, boolean $ligne_temporaire = FALSE]]) : void
Liste de paramètres
$string
Chaîne de caractère à afficher dans la console.
$align
Alignement du texte dans la console.
Option | Description | Type |
---|---|---|
LEFT, L | Valeur par défaut Alignement à gauche, insensible à la case. |
string |
RIGHT, R | Alignement à droite, insensible à la case. | string |
CENTER, C, MIDDLE | Alignement centré, insensible à la case. | string |
$ligne_temporaire
Boolean pour assigner une ligne qui ne reste pas à l'affichage.
cmd_rprint
Raccourci vers cmd_print pour un affichage d'une ligne qui ne reste pas l'affichage.
Description
cmd_rprint(string $string[,string $align = 'L']) : void
cmd_item
Raccourci vers cmd_print pour un affichage d'une ligne ‘‘item’’.
Description
cmd_item(string $string) : void
read
Retourne ce que l'utilisateur renseigne dans la console.
Description
read() : mixed
Les fichiers
cli.class.php
<?php /********************************************************* * Fichier : cli.class.php * Début du projet : 13 avril 2012 18h12 * Modification : 16 novembre 2020 22h53 * * Une création de Loïc Doumerc www.loicdoumerc.fr *********************************************************/ class cli { public $ligne_nb_char = 60; private $ligne_temporaire = false; private $trait = "="; private function findeligne() { if($this->ligne_temporaire == true ) { echo "\r";//On se remet en debut de ligne echo str_pad('', $this->ligne_nb_char, ' ', STR_PAD_LEFT);//On complete d'espace vide (effacement) echo "\r";//et on revient au debut de ligne $this->ligne_temporaire = false; } else { echo "\n"; } } private function escape($string) { //On efface tout ce qui n'est pas affichable //En gros on garde pas tout ce qui est en dehors de la plage !-Z + les espace et tabulation, voir tableau ASCII return preg_replace ( '#[^!-Z[:blank:]]#im' , '' , $string); } public function cmd_print($string, $align = 'L', $ligne_temporaire = false) { $this->findeligne(); $this->ligne_temporaire = $ligne_temporaire; $string = $this->escape($string); switch( strtoupper($align) ) { case "R": case "RIGHT": echo str_pad($string, $this->ligne_nb_char, ' ', STR_PAD_LEFT); break; case "C": case "CENTER": case "MIDDLE": echo str_pad($string, $this->ligne_nb_char, ' ', STR_PAD_BOTH); break; case "L": case "LEFT": default: echo $string; } } public function cmd_rprint($string,$align = 'L') { $this->cmd_print($string, $align, true); } public function cmd_item($string) { $this->cmd_print(' -> ' . $string, 'L'); } public function hr() { $this->findeligne(); echo str_pad('', $this->ligne_nb_char, $this->trait); } public function read() { $this->ligne_temporaire = true; return trim(@fgets(STDIN)); } public function beep(){echo chr(7);} public function end() { $this->findeligne(); $this->findeligne(); $this->findeligne(); $this->cmd_print('Une creation Loic Doumerc'); $this->cmd_print('Appuyer sur entree pour quitter le script'); $this->read();//Pour forcer la personne à faire une action } }
La commande de lancement .bat ou .sh
Il permet de lancer le script
php exemple.php
exemple.php
<?php
require_once('cli.class.php');
$cli = new cli();
$cli->ligne_nb_char = 60;//Par défaut 60, ligne optionelle
$cli->hr();//Fait une séparation
$cli->cmd_print('SERVEUR', 'C');//Affiche un texte centré
$cli->hr();
for($i =0; $i < 256 ; $i++)
{
$cli->cmd_rprint('Iteration '.$i . ' ' . chr($i),'C');//Ligne autoeffacable centrée
usleep(50000);//Petite pause pour pouvoir avoir le temps de voir les iterations
}
$cli->cmd_print('Vous etes ?');
$cli->cmd_item('[1] Un homme');
$cli->cmd_item('[2] Une femme');
$cli->cmd_item('[3] Je ne sais pas');
$cli->cmd_print('Votre choix : ');
if( $cli->read() == 3)
{
$cli->cmd_print('Je pense que vous etes perdu :)');
}
$cli->hr();
$cli->beep();//Emet un beep
$cli->end();
À propos
Je suis développeur depuis près de 20 ans.
Principalement dans le milieu web.