私が本当に探していたのは、__toArray
私のクラスの魔法のメソッドでしたが、そのようなものは存在しないと思いますし、ArrayAccess
インターフェースは私が探しているものと一致しません。
が呼び出されたときに、従来の PHP 文字列表現ではなくjson_encode
、オブジェクトの d 表現を返せるようにしたいと考えています。serialize
これは私のコードの例ですが、うまくいきません。
<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>
メソッドの 1 つを省略するとエラーが表示されるため、インターフェイスを正しく実装していることはわかっています。ただし、これは私のスクリプトが返すものです:
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
インターフェイスを使用する目的を無効にしますが。
何かご意見は?
ありがとう。