From 314e8813b3e730bf09c3e6ee7280d93046a47a37 Mon Sep 17 00:00:00 2001 From: Sergey Rabochiy Date: Tue, 24 Apr 2018 14:18:57 +0700 Subject: [PATCH] [DI] Add check of internal type to ContainerBuilder::getReflectionClass --- .../DependencyInjection/ContainerBuilder.php | 19 +++++++++++++++++++ .../Tests/ContainerBuilderTest.php | 17 +++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 512abd1d27..7f79e2f4ff 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -124,6 +124,20 @@ class ContainerBuilder extends Container implements TaggedContainerInterface private $removedIds = array(); private $alreadyLoading = array(); + private static $internalTypes = array( + 'int' => true, + 'float' => true, + 'string' => true, + 'bool' => true, + 'resource' => true, + 'object' => true, + 'array' => true, + 'null' => true, + 'callable' => true, + 'iterable' => true, + 'mixed' => true, + ); + public function __construct(ParameterBagInterface $parameterBag = null) { parent::__construct($parameterBag); @@ -341,6 +355,11 @@ class ContainerBuilder extends Container implements TaggedContainerInterface if (!$class = $this->getParameterBag()->resolveValue($class)) { return; } + + if (isset(self::$internalTypes[$class])) { + return null; + } + $resource = null; try { diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 197bfae844..51038b6b15 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -906,6 +906,23 @@ class ContainerBuilderTest extends TestCase $this->assertSame('BarMissingClass', (string) end($resources)); } + public function testGetReflectionClassOnInternalTypes() + { + $container = new ContainerBuilder(); + + $this->assertNull($container->getReflectionClass('int')); + $this->assertNull($container->getReflectionClass('float')); + $this->assertNull($container->getReflectionClass('string')); + $this->assertNull($container->getReflectionClass('bool')); + $this->assertNull($container->getReflectionClass('resource')); + $this->assertNull($container->getReflectionClass('object')); + $this->assertNull($container->getReflectionClass('array')); + $this->assertNull($container->getReflectionClass('null')); + $this->assertNull($container->getReflectionClass('callable')); + $this->assertNull($container->getReflectionClass('iterable')); + $this->assertNull($container->getReflectionClass('mixed')); + } + public function testCompilesClassDefinitionsOfLazyServices() { $container = new ContainerBuilder();