PHP-CLI est une bibliothèque simple qui aide à créer de beaux scripts de ligne de commande.
Il s'occupe de
Il est léger et n'a pas de dépendances tierces . Remarque: Ceci est pour les scripts non interactifs. Il n'a pas de lecture ni de support similaire.
Utilisez le compositeur:
php composer.phar require splitbrain/php-cli
Exemple minimal:
#!/usr/bin/php
<?php
require __DIR__ . ' /../vendor/autoload.php ' ;
use splitbrain phpcli CLI ;
use splitbrain phpcli Options ;
class Minimal extends CLI
{
// register options and arguments
protected function setup ( Options $ options )
{
$ options -> setHelp ( ' A very minimal example that does nothing but print a version ' );
$ options -> registerOption ( ' version ' , ' print version ' , ' v ' );
}
// implement your code
protected function main ( Options $ options )
{
if ( $ options -> getOpt ( ' version ' )) {
$ this -> info ( ' 1.0.0 ' );
} else {
echo $ options -> help ();
}
}
}
// execute it
$ cli = new Minimal ();
$ cli -> run ();
L'utilisation de base est simple:
extend splitbrainphpcliCLIsetup($options) et enregistrez les options, les arguments, les commandes et définissent des textes d'aide$options->setHelp() ajoute une description générale$options->registerOption() Ajoute une option$options->registerArgument() ajoute un argument$options->registerCommand() ajoute une sous-commandemain($options) et faites votre logique commerciale là-bas$options->getOpts vous permet d'accéder aux options de définition$options->getArgs() renvoie les arguments restants après avoir retiré les options$options->getCmd() Renvoie la sous-commande utilisée l'utilisateur utilisérun() dessusPlus d'exemples peuvent être trouvés dans le répertoire des exemples. Veuillez vous référer aux documents API pour plus d'informations.
Par défaut, la classe CLI enregistre un gestionnaire d'exceptions et imprimera le message de l'exception à l'utilisateur final et quittra le programme avec un code de sortie non nul. Vous pouvez désactiver ce comportement et prendre toutes les exceptions vous-même en passant False au constructeur.
Vous pouvez utiliser l' splitbrainphpcliException fournie fournie pour signaler vous-même des problèmes dans votre code principal. Le code de l'exception sera alors utilisé comme code de sortie.
Stacktraces sera imprimée sur debug au niveau du journal.
La sortie colorée est gérée par la classe Colors . Il essaie de détecter si un terminal de couleur est disponible et n'utilise que les couleurs du terminal. Vous pouvez toujours supprimer la sortie colorée en passant --no-colors à vos scripts. Les couleurs invalidantes désactiveront également les préfixes d'émoticône.
Les messages de journal colorés simples peuvent être imprimés par vous en utilisant les méthodes de convoices success() (vert), info() (cyan), error() (rouge) ou fatal() (rouge). Ce dernier quittera également le programme avec un code de sortie non nul.
Pour une coloration plus complexe, vous pouvez accéder à la classe de couleurs via $this->colors de votre script. La méthode wrap() est probablement ce que vous voulez utiliser.
Le formateur de table permet de colorer les colonnes complètes. Pour utiliser ce mécanisme, passez un tableau de couleurs sous forme de troisième paramètre à sa méthode format() . Veuillez noter que vous ne pouvez pas passer des textes colorés dans les seconds paramètres (le calcul de la longueur du texte et l'enveloppe échoueront, brisant vos textes).
La classe TableFormatter vous permet d'aligner des textes dans plusieurs colonnes. Il essaie de déterminer la largeur du terminal disponible en soi. Il peut être écrasé en définissant une variable d'environnement COLUMNS .
Le formateur est utilisé via la méthode format() qui attend au moins deux tableaux: le premier définit les largeurs de colonnes, la seconde contient les textes pour se remplir dans les colonnes. Entre chaque colonne, une bordure est imprimée (un seul espace par défaut).
Voir l' example/table.php pour l'utilisation de l'échantillon.
La largeur des colonnes peut être donnée sous trois formes:
15 )25% )* )Lors du mélange de largeurs fixes et de pourcentage, les pourcentages se réfèrent à l'espace restant après que toutes les colonnes fixes ont été attribuées.
L'espace pour les frontières est automatiquement calculé. Il est recommandé d'avoir toujours un certain temps (pourcentage) ou une colonne de fluide pour ajuster pour différentes largeurs de terminaux.
Le formateur de table est utilisé pour l'écran d'aide automatique accessible lorsque vous appelez votre script avec -h ou --help .
La classe CLI est un enregistreur compatible PSR-3 entièrement PSR-3 (imprimer les données de journal colorées à STDOUT et STDERR). Ceci est utile lorsque vous appelez le code backend à partir de votre CLI qui s'attend à ce qu'une instance d'enregistrement produise toute sortie d'état sensible lors de l'exécution.
Si vous avez besoin de passer une classe implémentant le PsrLogLoggerInterface vous pouvez le faire en héritant de l'une des deux classes fournies implémentant cette interface au lieu de splitbrainphpcliCLI .
splitbrainphpcliPSR3CLI Si vous utilisez la version 2 de PSR3 (PHP <8.0)splitbrainphpcliPSR3CLIv3 Si vous utilisez la version 3 de PSR3 (PHP> = 8.0) L'objet résultant peut ensuite être passé sous forme d'instance d'enregistrement. La différence entre les deux est dans les signatures de méthode ajustées (avec une conduite de type appropriée) uniquement. Assurez-vous que le package psr/log composé suggéré installé lors de l'utilisation de ces classes.
Remarque: Si votre code backend appelle un journal PSR-3 mais ne tape pas réellement vérifier l'interface (aka étant uniquement loggerware), vous pouvez également passer une instance de splitbrainphpcliCLI .
Vous pouvez ajuster la verbosité de votre outil CLI à l'aide du paramètre --loglevel . Les Loglevels pris en charge sont le PSR-3 Loglevels et notre propre niveau success :

Des méthodes de commodité pour tous les niveaux de journal sont disponibles. L'interpolation de l'espace réservé comme décrit dans PSR-3 est également disponible. Les messages du niveau warning à venir sont imprimés à STDERR tous ci-dessous sont imprimés à STDOUT .
Le niveau de journal par défaut de votre script peut être défini en écrasant le membre $logdefault .
Voir example/logging.php pour un exemple.