Skip to content

Commit 66f2ccd

Browse files
[Config] Always protect ClassExistenceResource against bad parents
1 parent c3d5db6 commit 66f2ccd

File tree

3 files changed

+8
-12
lines changed

3 files changed

+8
-12
lines changed

Compiler/AutowirePass.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ private function populateAvailableType($id, Definition $definition)
388388
unset($this->ambiguousServiceTypes[$type]);
389389
}
390390

391-
if ($definition->isDeprecated() || !$reflectionClass = $this->container->getReflectionClass($definition->getClass(), true)) {
391+
if ($definition->isDeprecated() || !$reflectionClass = $this->container->getReflectionClass($definition->getClass())) {
392392
return;
393393
}
394394

@@ -444,7 +444,7 @@ private function set($type, $id)
444444
*/
445445
private function createAutowiredDefinition($type)
446446
{
447-
if (!($typeHint = $this->container->getReflectionClass($type, true)) || !$typeHint->isInstantiable()) {
447+
if (!($typeHint = $this->container->getReflectionClass($type)) || !$typeHint->isInstantiable()) {
448448
return;
449449
}
450450

@@ -478,7 +478,7 @@ private function createAutowiredDefinition($type)
478478

479479
private function createTypeNotFoundMessage(TypedReference $reference, $label)
480480
{
481-
if (!$r = $this->container->getReflectionClass($type = $reference->getType(), true)) {
481+
if (!$r = $this->container->getReflectionClass($type = $reference->getType())) {
482482
$message = sprintf('has type "%s" but this class does not exist.', $type);
483483
} else {
484484
$message = $this->container->has($type) ? 'this service is abstract' : 'no such service exists';

ContainerBuilder.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -337,13 +337,12 @@ public function addClassResource(\ReflectionClass $class)
337337
* Retrieves the requested reflection class and registers it for resource tracking.
338338
*
339339
* @param string $class
340-
* @param bool $koWithThrowingAutoloader Whether autoload should be protected against bad parents or not
341340
*
342341
* @return \ReflectionClass|null
343342
*
344343
* @final
345344
*/
346-
public function getReflectionClass($class, $koWithThrowingAutoloader = false)
345+
public function getReflectionClass($class)
347346
{
348347
if (!$class = $this->getParameterBag()->resolveValue($class)) {
349348
return;
@@ -353,20 +352,17 @@ public function getReflectionClass($class, $koWithThrowingAutoloader = false)
353352
try {
354353
if (isset($this->classReflectors[$class])) {
355354
$classReflector = $this->classReflectors[$class];
356-
} elseif ($koWithThrowingAutoloader) {
357-
$resource = new ClassExistenceResource($class, ClassExistenceResource::EXISTS_KO_WITH_THROWING_AUTOLOADER);
358-
359-
$classReflector = $resource->isFresh(0) ? false : new \ReflectionClass($class);
360355
} else {
361-
$classReflector = new \ReflectionClass($class);
356+
$resource = new ClassExistenceResource($class, false);
357+
$classReflector = $resource->isFresh(0) ? false : new \ReflectionClass($class);
362358
}
363359
} catch (\ReflectionException $e) {
364360
$classReflector = false;
365361
}
366362

367363
if ($this->trackResources) {
368364
if (!$classReflector) {
369-
$this->addResource($resource ?: new ClassExistenceResource($class, ClassExistenceResource::EXISTS_KO));
365+
$this->addResource($resource ?: new ClassExistenceResource($class, false));
370366
} elseif (!$classReflector->isInternal()) {
371367
$path = $classReflector->getFileName();
372368

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"symfony/proxy-manager-bridge": "Generate service proxies to lazy load them"
3333
},
3434
"conflict": {
35-
"symfony/config": "<3.3",
35+
"symfony/config": "<3.3.1",
3636
"symfony/finder": "<3.3",
3737
"symfony/yaml": "<3.3"
3838
},

0 commit comments

Comments
 (0)