Herramientas para hacer que trabajar con Symfony Console sea aún más asombroso.
Este paquete está disponible en Packagist:
composer require efrane/console-additions
Batch
Esta clase ofrece comandos de procesamiento por lotes de una aplicación de consola Symfony. Esto puede resultar útil al escribir cosas como scripts de implementación o actualización como comandos de consola que llaman a muchos otros comandos en un orden establecido, por ejemplo, actualización de caché, migraciones de bases de datos, etc.
Uso en un Command::execute
:
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();
Comandos de shell
Los lotes pueden ser un conjunto entrelazado de aplicaciones de consola y comandos de shell del sistema. Esta es una característica avanzada que requiere el paquete symfony/process
como dependencia adicional.
Dado que los comandos de shell crean internamente objetos Process
, la API Batch
expone métodos para agregar un comando de shell:
addShell
agrega el proceso con la configuración dada (consulte Batch::addShell para obtener más detalles)addShellCb(string $cmd, callable $cb)
crea el proceso y lo pasa a una devolución de llamada para su posterior configuración. Esto es especialmente útil cuando el comando deseado requiere algún tipo de tubería de proceso.Errores de silenciamiento
Es posible ejecutar un lote de comandos sin generar excepciones.
Este paquete ofrece interfaces de salida de consola adicionales:
FileOutput
FileOutputs escribe todos sus datos en una secuencia de archivos y presenta formas concretas:
NativeFileOutput
utiliza las funciones nativas de transmisión de archivos PHP, por lo que es una buena opción para destinos locales y, dependiendo de la configuración de los protocolos de transmisión PHP de su servidor, podría incluso ser suficiente para destinos remotos.
FlysystemFileOutput
por otro lado, pasa los datos de la transmisión a un adaptador league/flysystem
, pudiendo así enviar esos datos a cualquier destino compatible con Flysystem, es decir, S3, Dropbox, FTP, etc.
MultiplexedOutput
MultiplexedOutput se puede utilizar para combinar múltiples interfaces de salida para que actúen como una sola. Este es el compañero lógico de las salidas de archivos, ya que normalmente uno probablemente querrá enviar la salida a la consola del usuario y a algún otro destino. Una configuración interna simple podría verse así:
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
}
}