警告:get_class() 期望参数 1 是对象,给定字符串


Warning: get_class() expects parameter 1 to be object, string given

我正在使用symfony的投票来处理用户对我网站的访问。当用户未通过身份验证时,我收到错误:

Warning: get_class() expects parameter 1 to be object, string given

当用户访问调用投票者的页面时。选民中的代码是:

public function vote(TokenInterface $token, $object, array $attributes)
{
if (!$object || !$this->supportsClass(get_class($object))) {
    return self::ACCESS_ABSTAIN;
}
...}

当对象='匿名'时,这是从Symfony网站获取的常规代码。我当然可以修改此代码以检查对象是否是对象,但我想知道这是否正常?我会跳到选民不会被召唤到一个非对象上。

编辑:SuportsClass 和 SupportsAttribute 也是默认的:

protected function getSupportedClasses()
{
    return array(
        'AppBundle'Entity'User'Associate',
    );
}
protected function getSupportedAttributes()
{
    return array(self::SELECT_ASSOCIATES, self::GRANT_RIGHTS, self::REMOVE_RIGHT, self::DISPLAY_RIGHTS);
}

当用户未登录,但访问控制允许匿名用户时,用户是一个字符串"anon.",而不是用户界面实例。

您应该在supportsClass中打支票(例如 return is_object($objec);(。