Инструменты, которые сделают работу с Symfony Console еще более увлекательной.
Этот пакет доступен на Packagist:
composer require efrane/console-additions
Batch
Этот класс предлагает команды пакетной обработки консольного приложения 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)
создает процесс и передает его обратному вызову для дальнейшей настройки. Это особенно полезно, когда требуемая команда требует какого-либо технологического конвейера.Скрытие ошибок
Можно запустить пакет команд без создания исключений.
Этот пакет предлагает дополнительные интерфейсы вывода консоли:
FileOutput
FileOutputs записывает все свои данные в файловый поток и принимает конкретные варианты:
NativeFileOutput
использует встроенные функции потоковой передачи файлов PHP, поэтому является хорошим вариантом для локальных пунктов назначения и, в зависимости от конфигурации протоколов потоковой передачи PHP на вашем сервере, этого может быть даже достаточно для удаленных пунктов назначения.
FlysystemFileOutput
с другой стороны, передает данные потока в адаптер league/flysystem
, таким образом имея возможность отправлять эти данные в любое место назначения, поддерживаемое Flysystem, например, S3, Dropbox, FTP и т. д.
MultiplexedOutput
MultiplexedOutput можно использовать для объединения нескольких выходных интерфейсов в один. Это логический спутник вывода файлов, поскольку обычно требуется отправить вывод на консоль пользователя и в какое-либо другое место назначения. Простая настройка внутри может выглядеть так:
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
}
}