在我的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方法。