オブジェクトを直列化しましたが、逆シリアル化の後にオブジェクトが空であり、私が間違っていることを理解できません。Unserialize()空のオブジェクトを返します
これは私のコードです:
class Foo implements \Serializable {
public $default = 10;
public $setMe;
public $removeOnSerialize = 'blah';
public function serialize()
{
unset($this->removeOnSerialze);
return serialize($this);
}
public function unserialzie($serialized)
{
$unserialized = unserialize();
$unserialize->removeOnSerialize = 'Set some value';
return $unserialized;
}
}
$obj = new Foo();
$obj->setMe = 9999;
print_r($obj) // here I have all as exepcted
$serialized = serialize($obj);
$unserialized = unserialize($serialized);
print_r($unserialized);
//object properties after deserialization
$unserialized->default === 10 // correct
$unserialized->removeOnSerialize === 'Set some value' //correct
$unserialized->setMe === NULL // wrong, it should be 9999
あなたが逆シリアル化後に見るように 'setMe' プロパティは空です。 しかし、 'default'と 'removeOnSerialize'が渡されました。
アイデア?
よろしく、それはすでにあなたがunserialize
方法から何かを返すべきではありませんコメント欄で述べたように
いくつかの問題を行うことができます: 'リターンにserialize($ this)を;'あなたがこれを行うことによって、クラス全体をシリアル化しています。 '$ unserialized = unserialize();'は、unserializeするためにパラメータを渡す必要があります。どのように動作するかについては、[ここ](http://php.net/unserialize)を見てください。 – Andrew
メソッド名を確認してください。 'unserialzie'があり、' unserialize'があるはずです。コピー/貼り付け後にコードが機能していない - エラーと警告に従ってください - 彼らがあなたを案内します。 – zajonc