Des outils pour rendre le travail avec Symfony Console encore plus génial.
Ce package est disponible sur Packagist :
composer require efrane/console-additions
Batch
Cette classe propose des commandes de traitement par lots d'une application console Symfony. Cela peut être utile lors de l'écriture d'éléments tels que des scripts de déploiement ou de mise à jour sous forme de commandes de console qui appellent de nombreuses autres commandes dans un ordre défini, par exemple la mise à jour du cache, les migrations de bases de données, etc.
Utilisation dans un Command::execute
:
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();
Commandes Shell
Les lots peuvent être un ensemble entrelacé de commandes d’application console et de shell système. Il s'agit d'une fonctionnalité avancée qui nécessite le package symfony/process
comme dépendance supplémentaire.
Étant donné que les commandes shell créent en interne des objets Process
, l'API Batch
expose des méthodes permettant d'ajouter une commande shell :
addShell
ajoute le processus avec la configuration donnée (voir Batch::addShell pour plus de détails)addShellCb(string $cmd, callable $cb)
crée le processus et le transmet à un rappel pour une configuration ultérieure. Ceci est particulièrement utile lorsque la commande souhaitée nécessite une sorte de tuyauterie de processus.Faire taire les erreurs
Il est possible d'exécuter un lot de commandes sans lever d'exceptions.
Ce package offre des interfaces de sortie de console supplémentaires :
FileOutput
Les FileOutputs écrivent toutes leurs données dans un flux de fichiers et se présentent sous des formes concrètes :
NativeFileOutput
utilise les fonctions natives de streaming de fichiers PHP, constituant ainsi une bonne option pour les destinations locales et, en fonction de la configuration des protocoles de streaming PHP de vos serveurs, cela peut même suffire pour les destinations distantes.
FlysystemFileOutput
d'autre part, transmet les données de flux à un adaptateur league/flysystem
, pouvant ainsi envoyer ces données à n'importe quelle destination prise en charge par Flysystem, c'est-à-dire S3, Dropbox, FTP, etc.
MultiplexedOutput
MultiplexedOutput peut être utilisé pour combiner plusieurs interfaces de sortie pour agir comme une seule. C'est le compagnon logique des sorties de fichiers puisque généralement on voudrait probablement envoyer la sortie à la console de l'utilisateur et à une autre destination. Une configuration simple à l’intérieur pourrait ressembler à ceci :
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
}
}