Tools, die die Arbeit mit der Symfony-Konsole noch großartiger machen.
Dieses Paket ist auf Packagist verfügbar:
composer require efrane/console-additions
Batch
Diese Klasse bietet Batch-Befehle einer Symfony-Konsolenanwendung. Dies kann nützlich sein, wenn Sie Dinge wie Bereitstellungs- oder Aktualisierungsskripts als Konsolenbefehle schreiben, die viele andere Befehle in einer festgelegten Reihenfolge aufrufen, z. B. Cache-Aktualisierung, Datenbankmigrationen usw.
Verwendung in einem Command::execute
:
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();
Shell-Befehle
Batches können ein miteinander verflochtener Satz von Konsolenanwendungs- und System-Shell-Befehlen sein. Dies ist eine erweiterte Funktion, die das Paket symfony/process
als zusätzliche Abhängigkeit erfordert.
Da Shell-Befehle intern Process
erstellen, stellt die Batch
API Methoden zum Hinzufügen eines Shell-Befehls zur Verfügung:
addShell
fügt den Prozess mit der angegebenen Konfiguration hinzu (siehe Batch::addShell für Details)addShellCb(string $cmd, callable $cb)
erstellt den Prozess und übergibt ihn zur weiteren Konfiguration an einen Rückruf. Dies ist besonders nützlich, wenn der gewünschte Befehl eine Art Prozessverrohrung erfordert.Fehler unterdrücken
Es ist möglich, einen Stapel von Befehlen auszuführen, ohne Ausnahmen auszulösen.
Dieses Paket bietet zusätzliche Konsolenausgabeschnittstellen:
FileOutput
FileOutputs schreiben alle ihre Daten in einen Dateistream und kommen in konkreten Varianten vor:
NativeFileOutput
verwendet die nativen PHP-Datei-Streaming-Funktionen und ist daher eine gute Option für lokale Ziele. Abhängig von der Konfiguration der PHP-Streaming-Protokolle Ihres Servers kann es sogar für entfernte Ziele ausreichen.
FlysystemFileOutput
hingegen leitet die Stream-Daten an einen league/flysystem
-Adapter weiter und kann diese Daten somit an jedes von Flysystem unterstützte Ziel senden, z. B. S3, Dropbox, FTP usw.
MultiplexedOutput
MultiplexedOutput kann verwendet werden, um mehrere Ausgabeschnittstellen zu kombinieren, um als eine zu fungieren. Dies ist der logische Begleiter von Dateiausgaben, da man die Ausgabe normalerweise wahrscheinlich an die Konsole des Benutzers und an ein anderes Ziel senden möchte. Ein einfaches Setup im Inneren könnte so aussehen:
class Command extends Symfony Component Console Command {
public function execute ( InputInterface $ input , OutputInterface $ output ) {
// send output to multiple destinations
$ output = new EFrane ConsoleAdditions Output MultiplexedOutput ([
$ output ,
new EFrane ConsoleAdditions Output NativeFileOutput ( ' command.log ' )
]);
// normal console command
}
}