diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 2e455188ceec..a7d901356d90 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -241,6 +241,7 @@ public function merge(ContainerBuilder $container) $this->addDefinitions($container->getDefinitions()); $this->addAliases($container->getAliases()); + $this->addInterfaceInjectors($container->getInterfaceInjectors()); $this->parameterBag->add($container->getParameterBag()->all()); foreach ($container->getResources() as $resource) { diff --git a/src/Symfony/Component/DependencyInjection/InterfaceInjector.php b/src/Symfony/Component/DependencyInjection/InterfaceInjector.php index cbc27500c3f7..95a4db5d40c1 100755 --- a/src/Symfony/Component/DependencyInjection/InterfaceInjector.php +++ b/src/Symfony/Component/DependencyInjection/InterfaceInjector.php @@ -79,8 +79,11 @@ public function processDefinition(Definition $definition, $class = null) public function supports($object) { if (is_string($object)) { - $class = new \ReflectionClass($object); - $object = $class->newInstance(); + $reflection = new \ReflectionClass($object); + + return $reflection->implementsInterface($this->class) + || $reflection->isSubClassOf($this->class) + || $object === $this->class; } if ( ! is_object($object)) {