Tools, die die Arbeit mit der Symfony-Konsole noch großartiger machen.
Dieses Paket ist auf Packagist verfügbar:
composer require efrane/console-additionsBatchDiese 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:
FileOutputFileOutputs 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.
MultiplexedOutputMultiplexedOutput 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
}
}