SYMFONY4:“注意:未定义的变量:parentClass”

时间:2019-09-20 18:59:54

标签: php symfony

当我尝试转到调用实体的页面时,出现了此错误消息。 (例如,联系人页面或文章页面)

“通知:未定义的变量:parentClass”,它使我引用此文件 vendor \ doctrine \ persistence \ lib \ Doctrine \ Common \ Persistence \ AbstractManagerRegistry.php第176行

public function getManagerForClass($class)
{
    // Check for namespace alias
    if (strpos($class, ':') !== false) {
        [$namespaceAlias, $simpleClassName] = explode(':', $class, 2);
        $class                              = $this->getAliasNamespace($namespaceAlias) . '\\' . $simpleClassName;
    }
    $proxyClass = new ReflectionClass($class);
    if ($proxyClass->implementsInterface($this->proxyInterfaceName)) {
        $parentClass = $proxyClass->getParentClass();
        if (! $parentClass) {
            return null;
        }
    }
        $class = $parentClass->getName();
    foreach ($this->managers as $id) {
        $manager = $this->getService($id);
        if (! $manager->getMetadataFactory()->isTransient($class)) {
            return $manager;
        }
    }
}

我真的不知道该怎么办。 如果有人有主意或已经有此错误:)

谢谢!

2 个答案:

答案 0 :(得分:1)

您正确缩进的代码如下:

$proxyClass = new ReflectionClass($class);
if ($proxyClass->implementsInterface($this->proxyInterfaceName)) {
    $parentClass = $proxyClass->getParentClass();
    if (! $parentClass) {
        return null;
    }
}
$class = $parentClass->getName();

现在,在$proxyClass->implementsInterface(...)FALSE的情况下,没有定义$parentClass,因此会出现错误消息。

由于该代码似乎是在学说中,所以也许是一个错误。也许它是固定的,由于某种原因您使用了旧版本。也许更新?

in the current version the line is inside the if-block

答案 1 :(得分:0)

您是完全正确的,我不知道为什么$class = $parentClass->getName();不在'if'范围内,问题实际上是这个!谢谢!