Magento 2'de sınıfları, bir Nesne Yöneticisi fabrika kullanarak örneklenen: \Magento\Framework\ObjectManager\Factory\Factory::create()
.
Şimdiye kadar goo. Ama burada anlamadığım bir şey var.
DI için yapıcıya geçirilmesi gereken bağımsız değişkenlerde dairesel referans olup olmadığını kontrol ettikten sonra ve bağımsız değişkenler belirlendikten sonra bu ( $args
yapıcıya geçirilmesi gereken bağımsız değişkenlerdir):
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);
}
Neden bu uzun switch
açıklama? Neden doğrudan default
şubedeki kodu kullanmıyorsunuz ?
Veya neden case
8'de dursun ? Neden 5 veya 10 veya 127 olmasın?