Как использовать объект SymfonyStyle для получения опций

#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 переменной в исходном коде класса здесь, в репозитории

Надеюсь, это поможет