<?php
// Общий вопрос
class Question
{
public $text;
public $details;
}
class ChoiceQuestionDetails
{
public $options;
public $correntOption;
public function checkAnswer($answer)
{
if ($this->correntOption == $answer) {
return true;
} else {
return false;
}
}
public function printQuestions()
{
# Вывод вопроса
echo '' . PHP_EOL;
foreach ($this->options as $letter => $option) {
echo "{$letter}. {$option}" . PHP_EOL;
}
echo '' . PHP_EOL;
}
}
class NumericQuestionDetails
{
public $answer;
public $deviation;
public function checkAnswer($myAnswer)
{
if ($this->deviation >= (abs($myAnswer - $this->answer))) { return true;
} else {
return false;
}
}
public function printQuestions()
{
echo '' . PHP_EOL;
}
}
$questions = []; // список всех вопросов
$numericQuestions = []; // список деатлей вопросов с вводом числа
$choiceQustions = []; //// список деатлей вопросов с выбором ответа
// Первый вопрос
$question = new Question;
$question->text = '1 + 1 =';
$questions[1] = $question;
// Второй вопрос
$question = new Question;
$question->text = '1 + 2 =';
$questions[2] = $question;
// Детали вопроса 1 с вводом числа
$numericQuestion = new NumericQuestionDetails;
$numericQuestion->answer = 2;
$numericQuestion->deviation = 0;
$numericQuestions[1] = $numericQuestion;
// Детали вопроса 1 с выбором овтета
$choiceQustion = new ChoiceQuestionDetails;
$choiceQustion->options = ['a' => '1', 'b' => '2'];
$choiceQustion->correntOption = 'b';
$choiceQustions[1] = $choiceQustion;
// Детали вопроса 2 с вводом числа
$numericQuestion = new NumericQuestionDetails;
$numericQuestion->answer = 3;
$numericQuestion->deviation = 0;
$numericQuestions[2] = $numericQuestion;
// Детали вопроса 2 с выбором ответа
$choiceQustion = new ChoiceQuestionDetails;
$choiceQustion->options = ['a' => '2', 'b' => '3'];
$choiceQustion->correntOption = 'b';
$choiceQustions[2] = $choiceQustion;
$questions[1]->details = $choiceQustions[1];
$questions[2]->details = $numericQuestions[2];
$numberQ = 1;
foreach ($questions as $question) {
echo "{$numberQ}) ";
echo $question->text;
$a = $question->details->printQuestions(); // корректна ли такая запись ?
$numberQ++;
}
$answers = ['b', 3];
echo PHP_EOL . 'Проверяем введенные ответы' . PHP_EOL;
for ($i = 1; $i <= count($questions); $i++) { echo "{$i}) ";
if ($questions[$i]->details->checkAnswer($answers[$i-1])) {
echo 'Верно' . PHP_EOL;
} else {
echo 'Не верно' . PHP_EOL;
}
}