[DI] Add check of internal type to ContainerBuilder::getReflectionClass
This commit is contained in:
parent
ea25fec603
commit
314e8813b3
@ -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 {
|
||||
|
@ -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();
|
||||
|
Reference in New Issue
Block a user