У меня есть простое консольное приложение, использующее компонент консоли Symfony.
У меня есть две команды (скажем, cmdOne
а также cmdTwo
) который можно легко вызвать независимо.
$ myApp.php cmdOne
$ myApp.php cmdTwo
Обе команды имеют значительный объем вывода, который можно легко отключить, введя -q
вариант.
Теперь я хотел бы cmdOne
звонить cmdTwo
Однако я хотел бы cmdTwo
быть спокойным. Я не пытаюсь сделать что-нибудь сумасшедшее, но я изо всех сил пытаюсь добраться куда угодно, несмотря на чтение документов.
Вот мой пример кода (этот фрагмент будет содержаться внутри cmdOne->execute()
):
$command = $this->getApplication()->find('cmdTwo');
$input = new ArrayInput(array(
'command' => 'cmdTwo',
'-q' => true
));
$returnCode = $command->run($input, $output);
Это работает нормально, как в коде команды, но есть вывод на консоль (генерируется cmdTwo
) которую я бы не хотел показывать.
Указывает -q
опция невозможна, потому что она «зарезервирована» (т.е. не создана разработчиком), или я упускаю что-то очевидное?
Вместо того чтобы проходить то же самое $output
экземпляр (тот, который выводит на вашу текущую консоль) создать экземпляр NullOutput
$returnCode = $command->run($input, new \Symfony\Component\Console\Output\NullOutput);
Это в основном черная дыра — она принимает вывод и молча отбрасывает его.
Других решений пока нет …