55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
require_once "Tasks/SingleChoiceTask.php";
 | 
						|
 | 
						|
require_once "Tasks/OpenEndedTask.php";
 | 
						|
 | 
						|
require_once "Tasks/NumberConversionTask.php";
 | 
						|
 | 
						|
require_once "Tasks/TruthTableTask.php";
 | 
						|
 | 
						|
require_once "Tasks/VerilogTask.php";
 | 
						|
 | 
						|
require_once "Tasks/LogicFunctionTask.php";
 | 
						|
 | 
						|
class TaskFactory
 | 
						|
{
 | 
						|
    static function fromArray(array $a, Game|Test|null &$governor = null): Task|null
 | 
						|
    {
 | 
						|
        $type = $a["type"] ?? "singlechoice"; // if the type is missing, then it's a single choice task
 | 
						|
        switch ($type) {
 | 
						|
            case "singlechoice":
 | 
						|
                $task = new SingleChoiceTask($a);
 | 
						|
                break;
 | 
						|
            case "openended":
 | 
						|
                $task = new OpenEndedTask($a);
 | 
						|
                break;
 | 
						|
            case "numberconversion":
 | 
						|
                $task = new NumberConversionTask($a);
 | 
						|
                break;
 | 
						|
            case "truthtable":
 | 
						|
                $task = new TruthTableTask($a);
 | 
						|
                break;
 | 
						|
            case "logicfunction":
 | 
						|
                $task = new LogicFunctionTask($a);
 | 
						|
                break;
 | 
						|
            case "verilog":
 | 
						|
                $task = new VerilogTask($a);
 | 
						|
                break;
 | 
						|
            default:
 | 
						|
                return null;
 | 
						|
        }
 | 
						|
 | 
						|
        $task->setGovernor($governor);
 | 
						|
        return $task;
 | 
						|
    }
 | 
						|
 | 
						|
    static function constructFromCollection(array $c, Game|Test|null &$governor = null): array
 | 
						|
    {
 | 
						|
        $chgs = [];
 | 
						|
        foreach ($c as $ch) {
 | 
						|
            $chgs[] = TaskFactory::fromArray($ch, $governor);
 | 
						|
        }
 | 
						|
        return $chgs;
 | 
						|
    }
 | 
						|
} |