From 2dd74ab89e005556c4b8fe80c9f0328c1f34a989 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 13 Nov 2017 18:28:57 +0100 Subject: [PATCH] [DI] Fix dumping with custom base class --- .../Component/DependencyInjection/Dumper/PhpDumper.php | 8 ++++++-- .../Tests/Fixtures/php/services1-1.php | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index a402c6cebb..d60072b755 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -112,7 +112,11 @@ class PhpDumper extends Dumper 'debug' => true, ), $options); - $this->initializeMethodNamesMap($options['base_class']); + if (0 !== strpos($baseClass = $options['base_class'], '\\') && 'Container' !== $baseClass) { + $baseClass = sprintf('%s\%s', $options['namespace'] ? '\\'.$options['namespace'] : '', $baseClass); + } + + $this->initializeMethodNamesMap('Container' === $baseClass ? Container::class : $baseClass); $this->docStar = $options['debug'] ? '*' : ''; @@ -141,7 +145,7 @@ class PhpDumper extends Dumper } } - $code = $this->startClass($options['class'], $options['base_class'], $options['namespace']); + $code = $this->startClass($options['class'], $baseClass, $options['namespace']); if ($this->container->isCompiled()) { $code .= $this->addFrozenConstructor(); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php index b791398c13..ed49a7e1c2 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php @@ -16,7 +16,7 @@ use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; * * @final since Symfony 3.3 */ -class Container extends AbstractContainer +class Container extends \Symfony\Component\DependencyInjection\Dump\AbstractContainer { private $parameters; private $targetDirs = array();