diff --git a/core/lib/Drupal/Component/DependencyInjection/Container.php b/core/lib/Drupal/Component/DependencyInjection/Container.php index 3e8b32b9c1c6b9901471748299c1131ed553d56a..9594b6c796ea52182a8965fe5227dae0d7623fad 100644 --- a/core/lib/Drupal/Component/DependencyInjection/Container.php +++ b/core/lib/Drupal/Component/DependencyInjection/Container.php @@ -256,60 +256,7 @@ protected function createService(array $definition, $id) { } else { $class = $this->frozen ? $definition['class'] : current($this->resolveServicesAndParameters([$definition['class']])); - $length = isset($definition['arguments_count']) ? $definition['arguments_count'] : count($arguments); - - // Optimize class instantiation for services with up to 10 parameters as - // ReflectionClass is noticeably slow. - switch ($length) { - case 0: - $service = new $class(); - break; - - case 1: - $service = new $class($arguments[0]); - break; - - case 2: - $service = new $class($arguments[0], $arguments[1]); - break; - - case 3: - $service = new $class($arguments[0], $arguments[1], $arguments[2]); - break; - - case 4: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3]); - break; - - case 5: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4]); - break; - - case 6: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5]); - break; - - case 7: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6]); - break; - - case 8: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6], $arguments[7]); - break; - - case 9: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6], $arguments[7], $arguments[8]); - break; - - case 10: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6], $arguments[7], $arguments[8], $arguments[9]); - break; - - default: - $r = new \ReflectionClass($class); - $service = $r->newInstanceArgs($arguments); - break; - } + $service = new $class(...$arguments); } if (!isset($definition['shared']) || $definition['shared'] !== FALSE) { diff --git a/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php b/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php index 8a1523577150e2b352938ad70c7edf1951115c67..be690488defabfe72709a81624a101d7e4406a79 100644 --- a/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php +++ b/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php @@ -80,60 +80,7 @@ protected function createService(array $definition, $id) { } else { $class = $this->frozen ? $definition['class'] : current($this->resolveServicesAndParameters([$definition['class']])); - $length = isset($definition['arguments_count']) ? $definition['arguments_count'] : count($arguments); - - // Optimize class instantiation for services with up to 10 parameters as - // reflection is noticeably slow. - switch ($length) { - case 0: - $service = new $class(); - break; - - case 1: - $service = new $class($arguments[0]); - break; - - case 2: - $service = new $class($arguments[0], $arguments[1]); - break; - - case 3: - $service = new $class($arguments[0], $arguments[1], $arguments[2]); - break; - - case 4: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3]); - break; - - case 5: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4]); - break; - - case 6: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5]); - break; - - case 7: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6]); - break; - - case 8: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6], $arguments[7]); - break; - - case 9: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6], $arguments[7], $arguments[8]); - break; - - case 10: - $service = new $class($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6], $arguments[7], $arguments[8], $arguments[9]); - break; - - default: - $r = new \ReflectionClass($class); - $service = $r->newInstanceArgs($arguments); - break; - } + $service = new $class(...$arguments); } if (!isset($definition['shared']) || $definition['shared'] !== FALSE) {