Dalam Magento 2 kelas adalah yang dipakai menggunakan pabrik manajer objek: \Magento\Framework\ObjectManager\Factory\Factory::create().
Sejauh ini sangat buruk. Tetapi ada sesuatu yang tidak saya mengerti di sini.
Setelah memeriksa apakah tidak ada referensi melingkar dalam argumen yang harus diteruskan ke konstruktor untuk DI dan setelah argumen ditentukan ada ini ( $argsadalah argumen yang harus diteruskan ke konstruktor):
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);
}
Mengapa switchpernyataan panjang ini ? Mengapa tidak menggunakan langsung kode dari defaultcabang?
Atau mengapa menghentikan casejam 8? Kenapa tidak 5 atau 10 atau 127?
