Инструменты, которые сделают работу с Symfony Console еще более увлекательной.
Этот пакет доступен на Packagist:
composer require efrane/console-additionsBatchЭтот класс предлагает команды пакетной обработки консольного приложения Symfony. Это может быть полезно при написании таких вещей, как сценарии развертывания или обновления в виде консольных команд, которые вызывают множество других команд в установленном порядке, например обновление кэша, миграцию базы данных и т. д.
Использование в Command::execute :
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();Команды оболочки
Пакеты могут представлять собой переплетенный набор консольных приложений и команд системной оболочки. Это расширенная функция, которая требует наличия пакета symfony/process в качестве дополнительной зависимости.
Поскольку команды оболочки внутри себя создают объекты Process , Batch API предоставляет методы для добавления команды оболочки:
addShell добавляет процесс с заданной конфигурацией (подробности см. в Batch::addShell).addShellCb(string $cmd, callable $cb) создает процесс и передает его обратному вызову для дальнейшей настройки. Это особенно полезно, когда требуемая команда требует какого-либо технологического конвейера.Скрытие ошибок
Можно запустить пакет команд без создания исключений.
Этот пакет предлагает дополнительные интерфейсы вывода консоли:
FileOutputFileOutputs записывает все свои данные в файловый поток и принимает конкретные варианты:
NativeFileOutput использует встроенные функции потоковой передачи файлов PHP, поэтому является хорошим вариантом для локальных пунктов назначения и, в зависимости от конфигурации протоколов потоковой передачи PHP на вашем сервере, этого может быть даже достаточно для удаленных пунктов назначения.
FlysystemFileOutput с другой стороны, передает данные потока в адаптер league/flysystem , таким образом имея возможность отправлять эти данные в любое место назначения, поддерживаемое Flysystem, например, S3, Dropbox, FTP и т. д.
MultiplexedOutputMultiplexedOutput можно использовать для объединения нескольких выходных интерфейсов в один. Это логический спутник вывода файлов, поскольку обычно требуется отправить вывод на консоль пользователя и в какое-либо другое место назначения. Простая настройка внутри может выглядеть так:
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
}
}