@@ -2,11 +2,9 @@ Question Helper
22===============
33
44The :class: `Symfony\\ Component\\ Console\\ Helper\\ QuestionHelper ` provides
5- functions to ask the user for more information. It is included in the default
6- helper set and you can get it by calling
7- :method: `Symfony\\ Component\\ Console\\ Command\\ Command::getHelper `::
5+ functions to ask the user for more information::
86
9- $helper = $this->getHelper('question' );
7+ $helper = new QuestionHelper( );
108
119The Question Helper has a single method
1210:method: `Symfony\\ Component\\ Console\\ Helper\\ QuestionHelper::ask ` that needs an
@@ -27,18 +25,18 @@ Suppose you want to confirm an action before actually executing it. Add
2725the following to your command::
2826
2927 // ...
28+ use Symfony\Component\Console\Attribute\AsCommand;
3029 use Symfony\Component\Console\Command\Command;
3130 use Symfony\Component\Console\Input\InputInterface;
3231 use Symfony\Component\Console\Output\OutputInterface;
3332 use Symfony\Component\Console\Question\ConfirmationQuestion;
3433
35- class YourCommand extends Command
34+ #[AsCommand(name: 'app:my-command')]
35+ class MyCommand
3636 {
37- // ...
38-
39- public function execute(InputInterface $input, OutputInterface $output): int
37+ public function __invoke(InputInterface $input, OutputInterface $output): int
4038 {
41- $helper = $this->getHelper('question' );
39+ $helper = new QuestionHelper( );
4240 $question = new ConfirmationQuestion('Continue with this action?', false);
4341
4442 if (!$helper->ask($input, $output, $question)) {
@@ -91,7 +89,7 @@ if you want to know a bundle name, you can add this to your command::
9189 use Symfony\Component\Console\Question\Question;
9290
9391 // ...
94- public function execute (InputInterface $input, OutputInterface $output): int
92+ public function __invoke (InputInterface $input, OutputInterface $output): int
9593 {
9694 // ...
9795 $question = new Question('Please enter the name of the bundle', 'AcmeDemoBundle');
@@ -121,10 +119,10 @@ but ``red`` could be set instead (could be more explicit)::
121119 use Symfony\Component\Console\Question\ChoiceQuestion;
122120
123121 // ...
124- public function execute (InputInterface $input, OutputInterface $output): int
122+ public function __invoke (InputInterface $input, OutputInterface $output): int
125123 {
126124 // ...
127- $helper = $this->getHelper('question' );
125+ $helper = new QuestionHelper( );
128126 $question = new ChoiceQuestion(
129127 'Please select your favorite color (defaults to red)',
130128 // choices can also be PHP objects that implement __toString() method
@@ -184,10 +182,10 @@ this use :method:`Symfony\\Component\\Console\\Question\\ChoiceQuestion::setMult
184182 use Symfony\Component\Console\Question\ChoiceQuestion;
185183
186184 // ...
187- public function execute (InputInterface $input, OutputInterface $output): int
185+ public function __invoke (InputInterface $input, OutputInterface $output): int
188186 {
189187 // ...
190- $helper = $this->getHelper('question' );
188+ $helper = new QuestionHelper( );
191189 $question = new ChoiceQuestion(
192190 'Please select your favorite colors (defaults to red and blue)',
193191 ['red', 'blue', 'yellow'],
@@ -218,10 +216,10 @@ will be autocompleted as the user types::
218216 use Symfony\Component\Console\Question\Question;
219217
220218 // ...
221- public function execute (InputInterface $input, OutputInterface $output): int
219+ public function __invoke (InputInterface $input, OutputInterface $output): int
222220 {
223221 // ...
224- $helper = $this->getHelper('question' );
222+ $helper = new QuestionHelper( );
225223
226224 $bundles = ['AcmeDemoBundle', 'AcmeBlogBundle', 'AcmeStoreBundle'];
227225 $question = new Question('Please enter the name of a bundle', 'FooBundle');
@@ -241,9 +239,9 @@ provide a callback function to dynamically generate suggestions::
241239 use Symfony\Component\Console\Question\Question;
242240
243241 // ...
244- public function execute (InputInterface $input, OutputInterface $output): int
242+ public function __invoke (InputInterface $input, OutputInterface $output): int
245243 {
246- $helper = $this->getHelper('question' );
244+ $helper = new QuestionHelper( );
247245
248246 // This function is called whenever the input changes and new
249247 // suggestions are needed.
@@ -282,10 +280,10 @@ You can also specify if you want to not trim the answer by setting it directly w
282280 use Symfony\Component\Console\Question\Question;
283281
284282 // ...
285- public function execute (InputInterface $input, OutputInterface $output): int
283+ public function __invoke (InputInterface $input, OutputInterface $output): int
286284 {
287285 // ...
288- $helper = $this->getHelper('question' );
286+ $helper = new QuestionHelper( );
289287
290288 $question = new Question('What is the name of the child?');
291289 $question->setTrimmable(false);
@@ -308,10 +306,10 @@ the response to a question should allow multiline answers by passing ``true`` to
308306 use Symfony\Component\Console\Question\Question;
309307
310308 // ...
311- public function execute (InputInterface $input, OutputInterface $output): int
309+ public function __invoke (InputInterface $input, OutputInterface $output): int
312310 {
313311 // ...
314- $helper = $this->getHelper('question' );
312+ $helper = new QuestionHelper( );
315313
316314 $question = new Question('How do you solve world peace?');
317315 $question->setMultiline(true);
@@ -335,10 +333,10 @@ convenient for passwords::
335333 use Symfony\Component\Console\Question\Question;
336334
337335 // ...
338- public function execute (InputInterface $input, OutputInterface $output): int
336+ public function __invoke (InputInterface $input, OutputInterface $output): int
339337 {
340338 // ...
341- $helper = $this->getHelper('question' );
339+ $helper = new QuestionHelper( );
342340
343341 $question = new Question('What is the database password?');
344342 $question->setHidden(true);
@@ -372,10 +370,10 @@ convenient for passwords::
372370 use Symfony\Component\Console\Question\ChoiceQuestion;
373371
374372 // ...
375- public function execute (InputInterface $input, OutputInterface $output): int
373+ public function __invoke (InputInterface $input, OutputInterface $output): int
376374 {
377375 // ...
378- $helper = $this->getHelper('question' );
376+ $helper = new QuestionHelper( );
379377 QuestionHelper::disableStty();
380378
381379 // ...
@@ -396,10 +394,10 @@ method::
396394 use Symfony\Component\Console\Question\Question;
397395
398396 // ...
399- public function execute (InputInterface $input, OutputInterface $output): int
397+ public function __invoke (InputInterface $input, OutputInterface $output): int
400398 {
401399 // ...
402- $helper = $this->getHelper('question' );
400+ $helper = new QuestionHelper( );
403401
404402 $question = new Question('Please enter the name of the bundle', 'AcmeDemoBundle');
405403 $question->setNormalizer(function (string $value): string {
@@ -434,10 +432,10 @@ method::
434432 use Symfony\Component\Console\Question\Question;
435433
436434 // ...
437- public function execute (InputInterface $input, OutputInterface $output): int
435+ public function __invoke (InputInterface $input, OutputInterface $output): int
438436 {
439437 // ...
440- $helper = $this->getHelper('question' );
438+ $helper = new QuestionHelper( );
441439
442440 $question = new Question('Please enter the name of the bundle', 'AcmeDemoBundle');
443441 $question->setValidator(function (string $answer): string {
@@ -494,10 +492,10 @@ You can also use a validator with a hidden question::
494492 use Symfony\Component\Console\Question\Question;
495493
496494 // ...
497- public function execute (InputInterface $input, OutputInterface $output): int
495+ public function __invoke (InputInterface $input, OutputInterface $output): int
498496 {
499497 // ...
500- $helper = $this->getHelper('question' );
498+ $helper = new QuestionHelper( );
501499
502500 $question = new Question('Please enter your password');
503501 $question->setNormalizer(function (?string $value): string {
0 commit comments