PHP で JSON を使用してプライベート クラス メンバーをエンコードする
PHP では、クラス メンバーがプライベートである場合、JSON にエンコードするのは難しい場合があります。プライベート メンバーを含むオブジェクトのデータをエンコードするシナリオを考えてみましょう。
最初は、カスタムの encodeJSON 関数を使用してプライベート変数を手動で抽出してエンコードすることで、この障害を克服することが試行される場合があります。
public function encodeJSON() { foreach ($this as $key => $value) { $json->key = $value; } return json_encode($json); }
ただし、オブジェクトのメンバー内にネストされたオブジェクトが含まれている場合、このアプローチはうまくいきません。これに対処するには、より包括的なソリューションが必要です。
JsonSerializable ソリューション
プライベート プロパティを使用してオブジェクトをシリアル化するエレガントなアプローチは、JsonSerializable インターフェイスを使用します。このインターフェイスを実装することで、カスタム JsonSerialize メソッドを定義して、シリアル化のために返されるデータを制御できます。
class Item implements \JsonSerializable { private $var; private $var1; private $var2; public function __construct() { // ... } public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } }
この実装により、json_encode はオブジェクトをそのプライベート データとパブリック データとともに正しくシリアル化できるようになりました。
以上がPHP でプライベート クラス メンバーを JSON にエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。