unserialize()请在第二个参数中指定允许进行非序列化的类



在我的Symfony应用程序中,我有一个序列化的User实体。在unserialize()方法中,我这样做:

public function unserialize($serialized)
{
[
$this->id,
$this->email,
$this->password,
$this->enabled
] = unserialize($serialized);
}

但是PhpStorm用红色unserialize($serialized)下划线并显示以下信息:

请在第二个参数中指定允许不序列化的类。

我不知道应该用什么作为第二个参数。经过一些研究,我发现我们可以把这个:

unserialize($serializeObj, ["allowed_classes" => true]);

但我也发现了这个:

unserialize(
$serializedData,
['allowed_classes' => ['Class1', 'Class2']]
);

我有点困惑,我不知道我应该把什么放在我的情况下,这样PhpStorm就不会抱怨这件事了。

如果实际序列化的是数组,而不是类实例,则只需要将false作为允许的类传递。

public function unserialize($serialized)
{
[
$this->id,
$this->email,
$this->password,
$this->enabled
] = unserialize($serialized, ['allowed_classes' => false]);
}

如果您正在序列化整个实体,则需要传递期望从非序列化实例化的类

假设类是AppEntityUser

public function unserialize($serialized) {
$new = unserialize($serialized, ['allowed_classes' => [ User::class ]]);
$this->id       = $new->getId();
$this->$email   = $new->getEmail();
$this->password = $new->getPassword();
$this->enabled  = $new->isEnabled();
}

为了简单起见,我假设您在实体中有getter方法。

相关内容

  • 没有找到相关文章

最新更新