magento 2では、クラスはオブジェクトマネージャーファクトリを使用してインスタンス化されます \Magento\Framework\ObjectManager\Factory\Factory::create()
。
これまでのところgoo。しかし、ここで私が理解できないことがある。
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
ブランチのコードを直接使用しないのはなぜですか?
または、なぜcase
8時に停止しますか?なぜ5または10または127ではないのですか?