private function PhpDumper::addNewInstance

2 calls to PhpDumper::addNewInstance()
PhpDumper::addServiceInlinedDefinitions in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
Generates the inline definition of a service.
PhpDumper::addServiceInstance in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
Generates the service instance.

File

drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php, line 673

Class

PhpDumper
PhpDumper dumps a service container as a PHP class.

Namespace

Symfony\Component\DependencyInjection\Dumper

Code

private function addNewInstance($id, Definition $definition, $return, $instantiation) {
  $class = $this
    ->dumpValue($definition
    ->getClass());
  $arguments = array();
  foreach ($definition
    ->getArguments() as $value) {
    $arguments[] = $this
      ->dumpValue($value);
  }
  if (null !== $definition
    ->getFactoryMethod()) {
    if (null !== $definition
      ->getFactoryClass()) {
      return sprintf("        {$return}{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this
        ->dumpValue($definition
        ->getFactoryClass()), $definition
        ->getFactoryMethod(), $arguments ? ', ' . implode(', ', $arguments) : '');
    }
    if (null !== $definition
      ->getFactoryService()) {
      return sprintf("        {$return}{$instantiation}%s->%s(%s);\n", $this
        ->getServiceCall($definition
        ->getFactoryService()), $definition
        ->getFactoryMethod(), implode(', ', $arguments));
    }
    throw new RuntimeException(sprintf('Factory method requires a factory service or factory class in service definition for %s', $id));
  }
  if (false !== strpos($class, '$')) {
    return sprintf("        \$class = %s;\n\n        {$return}{$instantiation}new \$class(%s);\n", $class, implode(', ', $arguments));
  }
  return sprintf("        {$return}{$instantiation}new \\%s(%s);\n", substr(str_replace('\\\\', '\\', $class), 1, -1), implode(', ', $arguments));
}