SpreadQuiz/class/TaskFactory.php
2025-09-30 22:44:06 +02:00

36 lines
905 B
PHP

<?php
require_once "Tasks/SingleChoiceTask.php";
require_once "Tasks/OpenEndedTask.php";
require_once "Tasks/NumberConversionTask.php";
class TaskFactory
{
static function fromArray(array $a): Task|null
{
$type = $a["type"] ?? "singlechoice"; // if the type is missing, then it's a single choice task
switch ($type) {
case "singlechoice":
return new SingleChoiceTask($a);
break;
case "openended":
return new OpenEndedTask($a);
break;
case "numberconversion":
return new NumberConversionTask($a);
break;
}
return null;
}
static function constructFromCollection(array $c): array {
$chgs = [];
foreach ($c as $ch) {
$chgs[] = TaskFactory::fromArray($ch);
}
return $chgs;
}
}