Encodage d'objets PHP avec des membres privés à l'aide de JSON
Lors de l'encodage d'objets PHP en JSON, vous pouvez rencontrer des problèmes si les objets contiennent des membres privés. Par défaut, les membres privés ne sont pas accessibles en dehors de la classe.
Fonctions d'encodage et membres privés
L'extrait de code fourni illustre une fonction d'encodage personnalisée qui parcourt les propriétés de l'objet. et les stocke dans un objet $json. Cependant, cette approche présente des limites lorsque l'objet contient des objets imbriqués.
Implémentation de l'interface JsonSerialalisable
Pour surmonter ce défi, il est recommandé d'implémenter l'interface JsonSerialalisable. Cette interface définit une méthode, jsonSerialize, qui vous permet de contrôler les données qui sont sérialisées.
Personnalisation de la sérialisation
En implémentant jsonSerialize, vous pouvez spécifier quelles propriétés doivent être inclus dans la représentation JSON. Le code suivant montre comment implémenter cette interface et renvoyer les données souhaitées :
class Item implements \JsonSerializable { private $var; private $var1; private $var2; public function __construct() { // ... } public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } }
Utilisation de json_encode
Une fois la méthode jsonSerialize implémentée, json_encode sérialisera correctement le objet, y compris les membres privés comme spécifié dans votre implémentation jsonSerialize.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!