我真正在寻找的是__toArray
我的班级的神奇方法,但我想这样的东西不存在,而且ArrayAccess
界面与我正在寻找的不匹配。
我希望能够在调用json_encode
对象时返回对象的 d 表示serialize
,而不是传统的 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:{{"a":1,"b":2}}
如果我实例化一个实例A
并像任何旧方法一样调用它,如下所示:
$a = new A();
$a->serialize();
它按预期工作:
PHP版本: 5.4.14
序列化: {"a":1,"b":2}
虽然这种方式违背了使用Serializable
界面的目的。
有什么想法吗?
谢谢。