我真正想要的是一個神奇的方法__toArray
爲我的課,但我想這樣的事情不存在,並且ArrayAccess
接口不符合我在找什麼對於。PHP類實現Serializable不會序列化
我希望能夠在調用serialize
時返回json_encode
d對象的表示形式,而不是傳統的PHP字符串表示形式。
這是我的代碼的一個例子,我不能去工作。
<pre>
<?php
class A implements Serializable {
private $a,
$b,
$c;
public function __construct() {
$this->a = 1;
$this->b = 2;
$this->c = 3;
}
public function serialize() {
return json_encode(array (
'a' => $this->a,
'b' => $this->b
));
}
public function unserialize ($serialized) {
}
}
echo '<b>PHP version:</b> ',
phpversion(),
PHP_EOL,
'<b>Serialized:</b> ',
serialize(new A());
?>
</pre>
我知道我正確地實現了接口,因爲如果我忽略其中一種方法,它會顯示一個錯誤。然而,這是我的腳本返回:
PHP版本: 5.4.14
序列化: C:1: 「A」:13:{{ 「一」:1,」 b「:2}}
如果我實例的A
的實例並調用它像任何舊的方法,像這樣:
$a = new A();
$a->serialize();
它按預期工作:
PHP版本: 5.4.14
序列化: { 「一」:1, 「B」:2}
儘管這種擊敗了使用Serializable
界面的目的。
有什麼想法?
謝謝。
我甚至不知道這樣的接口存在,但這正是我所需要的!非常感謝。 –