【问题标题】:Symfony 4 : Unsezialise() , ["allowed_classes" => false] errorSymfony 4:Unsezialise(),["allowed_classes" => false] 错误
【发布时间】:2020-03-12 10:31:35
【问题描述】:

我正在使用 Synfony 4 开发一个网站并创建了一个管理员登录。我使用了序列化和反序列化。

  /**
     * @inheritDoc
     */
    public function serialize()
    {
        // TODO: Implement serialize() method.
        return serialize([
            $this->id,
            $this->username,
            $this->password
        ]);
    }

    /**
     * @inheritDoc
     */
    public function unserialize($serialized)
    {
        // TODO: Implement unserialize() method.
        list(
            $this->id,
            $this->username,
            $this->password
            ) = $this->unserialize($serialized, ["allowed_classes" => false]);
    }

最后$this->unserialize($serialized, ["allowed_classes" => false]); 不起作用并显示 “方法调用提供了 2 个参数,但方法签名使用 1 个参数” 作为 Intellij IDEA 中的错误。 我不明白这是什么意思,也找不到任何相关信息。

我认为基本方法只需要unserialize($serialized) 或类似的东西,但是当我填写表格并发送它时,什么也没有发生。

【问题讨论】:

  • $this->unserialize() 和 PHP 内部的 unserialize() 不一样——你想要第二个
  • $this->unserialize ??那就是调用您已经使用的方法。1)位循环 2)$this->unserialize() 只有一个参数,而您正在传递 2 个参数。松开$this,这样你就只调用unserialize()

标签: php symfony web serialization symfony4


【解决方案1】:

我们不知道这些方法的上下文,但使用$this->unserialize(...),您正在调用当前函数 (public function unserialize($serialized){...})

您可能想要使用默认的 PHP 序列化程序。因此,您可能应该执行以下操作:

public function unserialize($serialized)
{
    list(
        $this->id,
        $this->username,
        $this->password
        ) = unserialize($serialized, ["allowed_classes" => false]);
}

如果“什么都没发生”,如果没有关于该问题的更多信息,我们将无法为您提供帮助! 您是否尝试添加任何转储来检查发生了什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多