Skip to content

Commit c33774c

Browse files
upyxstof
authored andcommitted
[DI] Add check of internal type to ContainerBuilder::getReflectionClass
1 parent 3b16002 commit c33774c

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

ContainerBuilder.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,20 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
124124
private $removedIds = array();
125125
private $alreadyLoading = array();
126126

127+
private static $internalTypes = array(
128+
'int' => true,
129+
'float' => true,
130+
'string' => true,
131+
'bool' => true,
132+
'resource' => true,
133+
'object' => true,
134+
'array' => true,
135+
'null' => true,
136+
'callable' => true,
137+
'iterable' => true,
138+
'mixed' => true,
139+
);
140+
127141
public function __construct(ParameterBagInterface $parameterBag = null)
128142
{
129143
parent::__construct($parameterBag);
@@ -341,6 +355,11 @@ public function getReflectionClass($class, $throw = true)
341355
if (!$class = $this->getParameterBag()->resolveValue($class)) {
342356
return;
343357
}
358+
359+
if (isset(self::$internalTypes[$class])) {
360+
return null;
361+
}
362+
344363
$resource = null;
345364

346365
try {

Tests/ContainerBuilderTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -906,6 +906,23 @@ public function testGetReflectionClass()
906906
$this->assertSame('BarMissingClass', (string) end($resources));
907907
}
908908

909+
public function testGetReflectionClassOnInternalTypes()
910+
{
911+
$container = new ContainerBuilder();
912+
913+
$this->assertNull($container->getReflectionClass('int'));
914+
$this->assertNull($container->getReflectionClass('float'));
915+
$this->assertNull($container->getReflectionClass('string'));
916+
$this->assertNull($container->getReflectionClass('bool'));
917+
$this->assertNull($container->getReflectionClass('resource'));
918+
$this->assertNull($container->getReflectionClass('object'));
919+
$this->assertNull($container->getReflectionClass('array'));
920+
$this->assertNull($container->getReflectionClass('null'));
921+
$this->assertNull($container->getReflectionClass('callable'));
922+
$this->assertNull($container->getReflectionClass('iterable'));
923+
$this->assertNull($container->getReflectionClass('mixed'));
924+
}
925+
909926
public function testCompilesClassDefinitionsOfLazyServices()
910927
{
911928
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)