2
所以根據定義,在序列化時,類中的私人數字前綴爲類名稱。這對我來說是一個問題,我希望能夠序列化/保存/反序列化一個確切的對象,但是PHP所做的就是給我一個私人數字的類名+變量名的其他變體。php反序列化與私人成員
有什麼辦法可以輕鬆地反序列化私人成員?
感謝,
所以根據定義,在序列化時,類中的私人數字前綴爲類名稱。這對我來說是一個問題,我希望能夠序列化/保存/反序列化一個確切的對象,但是PHP所做的就是給我一個私人數字的類名+變量名的其他變體。php反序列化與私人成員
有什麼辦法可以輕鬆地反序列化私人成員?
感謝,
您不必擔心繫列化的,除非你的類inmplements的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」和「祕密」之間的潛在的名稱衝突,PHP知道該怎麼辦,給你:
object(Foo)#2 (2) {
["Secret":"Foo":private]=>
string(39) "Private (after serialize/unserialize)"
["FooSecret"]=>
string(38) "Public (after serialize/unserialize)"
}
這應該自動發生反序列化。你能提供一個錯誤發生的例子嗎? – Hamish 2011-02-28 03:12:28