unserialize() 请在第二个参数中指定 类 允许反序列化
unserialize() Please specify classes allowed for unserialization in 2nd argument
在我的 Symfony 应用程序中,我有一个 User
序列化的实体。在 unserialize()
方法中,我这样做了:
public function unserialize($serialized)
{
[
$this->id,
$this->email,
$this->password,
$this->enabled
] = unserialize($serialized);
}
但是 PhpStorm 以红色下划线 unserialize($serialized)
显示以下消息:
Please specify classes allowed for unserialization in 2nd argument.
我不知道应该使用什么作为第二个参数。经过一些研究,我发现我们可以这样写:
unserialize($serializeObj, ["allowed_classes" => true]);
但我也发现了这个:
unserialize(
$serializedData,
['allowed_classes' => ['Class1', 'Class2']]
);
我有点困惑,我不知道我应该在我的案例中放什么,这样 PhpStorm 就不会抱怨这个。
如果您实际上是在序列化一个数组,而不是一个 class 实例,您只需要按照允许的方式传递 false
classes.
public function unserialize($serialized)
{
[
$this->id,
$this->email,
$this->password,
$this->enabled
] = unserialize($serialized, ['allowed_classes' => false]);
}
如果你正在序列化整个实体,你需要传递class你希望从反序列化中实例化
所以我们假设 class 是 App\Entity\User
,
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 个方法。
在我的 Symfony 应用程序中,我有一个 User
序列化的实体。在 unserialize()
方法中,我这样做了:
public function unserialize($serialized)
{
[
$this->id,
$this->email,
$this->password,
$this->enabled
] = unserialize($serialized);
}
但是 PhpStorm 以红色下划线 unserialize($serialized)
显示以下消息:
Please specify classes allowed for unserialization in 2nd argument.
我不知道应该使用什么作为第二个参数。经过一些研究,我发现我们可以这样写:
unserialize($serializeObj, ["allowed_classes" => true]);
但我也发现了这个:
unserialize(
$serializedData,
['allowed_classes' => ['Class1', 'Class2']]
);
我有点困惑,我不知道我应该在我的案例中放什么,这样 PhpStorm 就不会抱怨这个。
如果您实际上是在序列化一个数组,而不是一个 class 实例,您只需要按照允许的方式传递 false
classes.
public function unserialize($serialized)
{
[
$this->id,
$this->email,
$this->password,
$this->enabled
] = unserialize($serialized, ['allowed_classes' => false]);
}
如果你正在序列化整个实体,你需要传递class你希望从反序列化中实例化
所以我们假设 class 是 App\Entity\User
,
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 个方法。