gpt4 book ai didi

php反序列化与私有(private)成员

转载 作者:行者123 更新时间:2023-12-02 02:27:42 26 4
gpt4 key购买 nike

因此根据定义,类中的私有(private)数字在序列化时以类名作为前缀。这对我来说是一个问题,我希望能够序列化/保存/反序列化一个确切的对象,但是 php 所做的是给我另一个 classname+variableName 的 varialbe 作为私有(private)号码。

有什么方法可以轻松反序列化私有(private)成员吗?

谢谢,

最佳答案

除非您的类实现了 Serializable,否则您无需担心序列化的内部机制。界面或有__wakeup and __sleep方法。

例如:

class Foo {
private $Secret = "Private (init)";

public $FooSecret = "Public (init)";

function setSecret($secret) {
$this->Secret = $secret;
}
function getSecret() {
return $this->Secret;
}
}

$bar = new Foo();
$bar->setSecret("Private (after serialize / unserialize)");
$bar->FooSecret = "Public (after serialize / unserialize)";
var_dump(unserialize(serialize($bar)));

即使“FooSecret”和“Secret”之间存在潜在的名称冲突,PHP 也知道该做什么并为您提供:

object(Foo)#2 (2) {
["Secret":"Foo":private]=>
string(39) "Private (after serialize / unserialize)"
["FooSecret"]=>
string(38) "Public (after serialize / unserialize)"
}

关于php反序列化与私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5137820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com