Certificationy\Cli\Command\StartCommand::askQuestions PHP Method

askQuestions() protected method

Ask questions
protected askQuestions ( Certificationy\Certification\Set $set, Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$set Certificationy\Certification\Set A Certificationy questions Set instance
$input Symfony\Component\Console\Input\InputInterface A Symfony Console input instance
$output Symfony\Component\Console\Output\OutputInterface A Symfony Console output instance
    protected function askQuestions(Set $set, InputInterface $input, OutputInterface $output)
    {
        $questionHelper = $this->getHelper('question');
        $showMultipleChoice = $input->getOption('show-multiple-choice');
        $questionCount = 1;
        foreach ($set->getQuestions() as $i => $question) {
            $choiceQuestion = new ChoiceQuestion(sprintf('Question <comment>#%d</comment> [<info>%s</info>] %s' . ($showMultipleChoice === true ? "\n" . 'This question <comment>' . ($question->isMultipleChoice() === true ? 'IS' : 'IS NOT') . "</comment> multiple choice." : ""), $questionCount++, $question->getCategory(), $question->getQuestion()), $question->getAnswersLabels());
            $multiSelect = $showMultipleChoice === true ? $question->isMultipleChoice() : true;
            $numericOnly = 1 === array_product(array_map('is_numeric', $question->getAnswersLabels()));
            $choiceQuestion->setMultiselect($multiSelect);
            $choiceQuestion->setErrorMessage('Answer %s is invalid.');
            $choiceQuestion->setAutocompleterValues($numericOnly ? null : $question->getAnswersLabels());
            $answer = $questionHelper->ask($input, $output, $choiceQuestion);
            $answers = true === $multiSelect ? $answer : array($answer);
            $answer = true === $multiSelect ? implode(', ', $answer) : $answer;
            $set->setAnswer($i, $answers);
            if ($input->getOption("training")) {
                $uniqueSet = new Set(array($i => $question));
                $uniqueSet->setAnswer($i, $answers);
                $this->displayResults($uniqueSet, $output);
            }
            $output->writeln('<comment>✎ Your answer</comment>: ' . $answer . "\n");
        }
    }