PHP バージョン 5.4 未満での PHP オブジェクトの JSON へのシリアル化
PHP の JsonSerializable インターフェイスは、オブジェクトを JSON にシリアル化する便利な方法を提供しますが、それは単にバージョン 5.4 以降で利用可能です。 PHP バージョン 5.3 以前の場合、同じ機能を実現するには別のメソッドを使用する必要があります。
そのようなメソッドの 1 つは、オブジェクトを JSON にシリアル化する前に配列に変換することです。再帰的アプローチを使用して、オブジェクトのプロパティを走査し、対応する配列を生成できます。ただし、このアプローチは複雑になる可能性があり、オブジェクトがそれ自体を参照する場合に再帰の問題が発生する可能性があります。
より簡単な方法は、オブジェクト クラスの __toString() マジック メソッドをオーバーライドすることです。オブジェクトの JSON 表現を返すこのメソッドを定義すると、json_encode() を使用してオブジェクトを JSON に直接シリアル化できます。
<code class="php">class Mf_Data { public function __toString() { return json_encode($this->toArray()); } public function toArray() { $array = get_object_vars($this); unset($array['_parent'], $array['_index']); array_walk_recursive($array, function (&$property) { if (is_object($property)) { $property = $property->toArray(); } }); return $array; } }</code>
このアプローチでは、複雑なツリーノード オブジェクトを次のように変換することでシリアル化できます。配列を取得してから JSON に変換します。オブジェクト参照は、シリアル化する前に配列から削除することで処理されます。さらに、結果の JSON がオブジェクトの有効な表現であることを保証します。
以上が5.4 より前の PHP バージョンで PHP オブジェクトを JSON にシリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。