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 ( $argssind 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 switchAussage? Warum nicht direkt den Code aus der defaultFiliale verwenden?
Oder warum um case8 aufhören ? Warum nicht 5 oder 10 oder 127?
