PHP-CLI ist eine einfache Bibliothek, die dazu beiträgt, gut aussehende Befehlszeilenskripte zu erstellen.
Es kümmert sich um
Es ist leicht und hat keine Abhängigkeiten von Drittanbietern . Hinweis: Dies gilt nur für nicht interaktive Skripte. Es hat keine Readline oder eine ähnliche Unterstützung.
Verwenden Sie Komponist:
php composer.phar require splitbrain/php-cli
Minimales Beispiel:
#!/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 ();
Die grundlegende Verwendung ist einfach:
extend splitbrainphpcliCLIsetup($options) und registrieren$options->setHelp() fügt eine allgemeine Beschreibung hinzu$options->registerOption() fügt eine Option hinzu$options->registerArgument() fügt ein Argument hinzu$options->registerCommand() fügt einen Subbefehl hinzumain($options) und führen Sie dort Ihre Geschäftslogik durch$options->getOpts können Sie auf Set-Optionen zugreifen$options->getArgs() gibt die verbleibenden Argumente zurück, nachdem die Optionen entfernt wurden$options->getCmd() gibt den Subbefehl zurück, den der Benutzer verwendet hatrun() darauf anWeitere Beispiele finden Sie im Beispielverzeichnis. Weitere Informationen finden Sie in den API -Dokumenten.
Standardmäßig registriert die CLI-Klasse einen Ausnahmebehandler und wird die Nachricht der Ausnahme an den Endbenutzer drucken und das Programm mit einem Exit-Code ungleich Null beenden. Sie können dieses Verhalten deaktivieren und alle Ausnahmen selbst fangen, indem Sie den Konstruktor falsch weitergeben.
Sie können die bereitgestellte splitbrainphpcliException verwenden, um alle Probleme in Ihrem Hauptcode selbst zu signalisieren. Der Code der Ausnahme wird dann als Exit -Code verwendet.
Stacktraces werden auf Log -Level debug gedruckt.
Die farbige Ausgabe wird durch die Colors behandelt. Es versucht zu erkennen, ob ein Farbterminal verfügbar ist und erst dann Terminalfarben verwendet. Sie können immer die farbige Ausgabe unterdrücken, indem --no-colors zu Ihren Skripten übergeben. Deaktivierende Farben deaktivieren auch die Emoticon -Präfixe.
Einfache farbige Protokollmeldungen können von Ihnen unter Verwendung des success() (grün) (grün), info() (Cyan), error() (rot) oder fatal() (rot) gedruckt werden. Letzteres beendet das Programm auch mit einem Exit-Code ungleich Null.
Für komplexere Farben können Sie über $this->colors in Ihrem Skript auf die Farbklasse zugreifen. Die wrap() -Methode ist wahrscheinlich das, was Sie verwenden möchten.
Das Tabellenformatierer ermöglicht das Färben der vollständigen Spalten. Um diesen Mechanismus zu verwenden, übergeben Sie ein Array von Farben als dritter Parameter an seine format() -Methode. Bitte beachten Sie, dass Sie in den zweiten Parametern keine farbigen Texte übergeben können (die Berechnung der Textlänge und das Verpackung schließen die Texte aus).
Mit der TableFormatter -Klasse können Sie Texte in mehreren Spalten ausrichten. Es versucht, die verfügbare Terminalbreite selbst herauszufinden. Es kann überschrieben werden, indem eine COLUMNS festgelegt wird.
Das Formatierer wird über die format() -Methode verwendet, die mindestens zwei Arrays erwartet: Die erste definiert die Spaltenbreiten, die zweite enthält die Texte in die Spalten. Zwischen jeder Spalte wird ein Rand gedruckt (standardmäßig ein einzelner Speicherplatz).
Siehe example/table.php für die Stichprobenanwendung.
Spalten Breite können in drei Formen angegeben werden:
15 )25% )* )Beim Mischen von festen und prozentualen Breiten beziehen sich die Prozentsätze auf den verbleibenden Speicherplatz, nachdem alle festen Spalten zugewiesen wurden.
Der Raum für Grenzen wird automatisch berechnet. Es wird empfohlen, immer einen relativen (Prozentsatz) oder eine Fluidsäule zu haben, um unterschiedliche Klemmenbreiten anzupassen.
Das Tabellenformatierer wird für den automatischen Hilfsbildschirm verwendet, der beim Aufrufen Ihres Skripts mit -h oder --help zugänglich ist.
Die CLI-Klasse ist ein vollständig pSR-3-kompatibler Logger (drucken farbige Protokolldaten für Stdout und Stderr). Dies ist nützlich, wenn Sie den Backend -Code von Ihrer CLI aufrufen, der erwartet, dass eine Logger -Instanz beim Ausführen eine sinnvolle Statusausgabe erzeugt.
Wenn Sie eine Klasse übergeben müssen, die das PsrLogLoggerInterface implementiert, können Sie dies tun, indem Sie von einer der beiden vorgesehenen Klassen erben, die diese Schnittstelle anstelle von splitbrainphpcliCLI implementieren.
splitbrainphpcliPSR3CLI wenn Sie Version 2 von PSR3 (PHP <8.0) verwendensplitbrainphpcliPSR3CLIv3 wenn Sie Version 3 von PSR3 (php> = 8.0) verwenden, Das resultierende Objekt kann dann als Logger -Instanz übergeben werden. Die Differenz zwischen den beiden besteht in angepassten Methodensignaturen (nur mit geeignetem Typ). Stellen Sie sicher, dass Sie das vorgeschlagene psr/log -Komponist -Paket bei Verwendung dieser Klassen installiert haben.
Hinweis: Wenn Ihr Backend-Code einen PSR-3-Protokoller auffordert, jedoch keine Prüfung für die Schnittstelle (auch bekannt als loggeraware) eingeben, können Sie auch nur eine Instanz von splitbrainphpcliCLI übergeben.
Sie können die Ausführlichkeit Ihres CLI -Tools mit dem Parameter --loglevel anpassen. Unterstützte Loglevels sind die PSR-3 Loglevels und unsere eigene success :

Convenience -Methoden für alle Protokollebenen sind verfügbar. Die Interpolation der Platzhalter, wie in PSR-3 beschrieben, ist ebenfalls verfügbar. Ab STDERR werden Nachrichten von warning auf STDOUT gedruckt.
Die Standardprotokollebene Ihres Skripts kann durch Überschreiben des $logdefault -Mitglieds festgelegt werden.
Ein Beispiel finden Sie example/logging.php .