#php #symfony #io #console-application
#php #symfony #io #консольное приложение
Вопрос:
Согласно:
http://symfony.com/blog/new-in-symfony-2-8-console-style-guide
… Использовать новое руководство по стилю в ваших командах так же просто, как создать экземпляр класса SymfonyStyle, передав ему $input и $output вашей команды. … Мы рекомендуем вам назвать эту переменную $io, потому что вы будете использовать ее как для операций ввода, так и для операций вывода. …
Экземпляр SymfonyStyle может использоваться для обработки операций ввода и вывода.
Таким образом, вместо того, чтобы иметь $input
переменную (экземпляр InputInterface
) и $output
переменную (экземпляр OutputInterface
), можно просто использовать $io (экземпляр SymfonyStyle
) для обработки обоих типов операций.
Это очень полезно.
Но как насчет метода getOption
of InputInterface
, используемого для получения опций, представленных пользователем?
Похоже, что это $input->getOption(...)
не может быть просто заменено на $io->getOption(...)
, потому что SymfonyStyle
у него нет этого метода.
Есть ли способ получить отправленную пользователем опцию, просто используя экземпляр SymfonyStyle
?
Ответ №1:
Кажется, вы можете перехватывать интерактивный ввод только с SymfonyStyle
классом с помощью askQuestion
метода. Для аргументов / опций, передаваемых команде, вам нужно использовать классический способ.
Проверьте использование $input
переменной в исходном коде класса здесь, в репозитории
Надеюсь, это поможет