19declare(strict_types=1);
46 $this->machines_string = array_merge($default_machines->get(),
$machines_string);
52 $definition_id = $definition->getFlavourMachineId();
54 $machine_string = $this->machines_string[$definition_id] ??
null;
55 if ($machine_string ===
null) {
56 return $null_machine->withReason(
'No machine found for definition ' . $definition->getId());
58 if (isset($this->machines_instances[$definition_id])) {
59 return $this->machines_instances[$definition_id];
62 $machine =
new $machine_string();
63 }
catch (\Throwable) {
64 return $null_machine->withReason(
'Could not instantiate machine ' . $machine_string);
68 return $null_machine->withReason(
'Machine ' . $machine_string .
' does not implement FlavourMachine');
71 $engine = $this->engines->get($machine);
74 return $null_machine->withReason(
75 'Machine ' . $machine_string .
' depends on engine ' .
76 $machine->dependsOnEngine()
77 .
' which is not running or available.'
81 $machine = $machine->withEngine($engine);
83 return $this->machines_instances[$definition_id] = $machine;
array $machines_instances
__construct(private \ILIAS\ResourceStorage\Flavour\Engine\Factory $engines, array $machines_string=[])
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.