magento 2에서 클래스는 객체 관리자 팩토리를 사용하여 인스턴스화됩니다 \Magento\Framework\ObjectManager\Factory\Factory::create().
지금까지 끈적 거리다. 그러나 내가 이해하지 못하는 것이 있습니다.
DI에 대한 생성자에 전달되어야하는 인수에 순환 참조가 없는지 확인한 후 인수가 결정된 후에는 이것이 있습니다 ( $args생성자에 전달되어야하는 인수 임).
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);
}
왜 이렇게 긴 switch진술입니까? default지점 에서 직접 코드를 사용하지 않는 이유는 무엇 입니까?
아니면 왜 case8시에 멈추 나요? 왜 5 또는 10 또는 127이 아닌가?
