Encodage des membres d'une classe privée avec JSON en PHP
En PHP, l'encodage des membres d'une classe en JSON peut être délicat lorsqu'ils sont privés. Considérez le scénario dans lequel vous souhaitez encoder les données d'un objet, qui inclut des membres privés.
Dans un premier temps, vous pouvez tenter de surmonter cet obstacle en utilisant une fonction encodeJSON personnalisée pour extraire et encoder manuellement les variables privées :
public function encodeJSON() { foreach ($this as $key => $value) { $json->key = $value; } return json_encode($json); }
Cependant, cette approche échoue lorsque l'objet contient des objets imbriqués au sein de ses membres. Pour résoudre ce problème, une solution plus complète est nécessaire.
Solution JsonSerialalisable
L'approche élégante de la sérialisation d'un objet avec des propriétés privées passe par l'interface JsonSerialalisable. En implémentant cette interface, vous pouvez définir une méthode JsonSerialize personnalisée pour contrôler les données renvoyées pour la sérialisation :
class Item implements \JsonSerializable { private $var; private $var1; private $var2; public function __construct() { // ... } public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } }
Avec cette implémentation, json_encode peut désormais sérialiser correctement votre objet ainsi que ses données privées et publiques.
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!