In Magento 2 werden die Klassen mithilfe einer Objektmanager-Factory instanziiert : \Magento\Framework\ObjectManager\Factory\Factory::create()
.
So weit so gut. Aber es gibt etwas, das ich hier nicht verstehe.
Nachdem überprüft wurde, ob die Argumente keine Zirkelverweise enthalten, die an den Konstruktor für DI übergeben werden sollen, und nachdem die Argumente ermittelt wurden, gibt es Folgendes ( $args
sind die Argumente, die an den Konstruktor übergeben werden sollen):
switch (count($args)) {
case 1:
return new $type($args[0]);
case 2:
return new $type($args[0], $args[1]);
case 3:
return new $type($args[0], $args[1], $args[2]);
case 4:
return new $type($args[0], $args[1], $args[2], $args[3]);
case 5:
return new $type($args[0], $args[1], $args[2], $args[3], $args[4]);
case 6:
return new $type($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
case 7:
return new $type($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
case 8:
return new $type($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
default:
$reflection = new \ReflectionClass($type);
return $reflection->newInstanceArgs($args);
}
Warum ist diese lange switch
Aussage? Warum nicht direkt den Code aus der default
Filiale verwenden?
Oder warum um case
8 aufhören ? Warum nicht 5 oder 10 oder 127?