36 lines
905 B
PHP
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;
|
|
}
|
|
} |