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 ( $args
adalah 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 switch
pernyataan panjang ini ? Mengapa tidak menggunakan langsung kode dari default
cabang?
Atau mengapa menghentikan case
jam 8? Kenapa tidak 5 atau 10 atau 127?