Comment puis-je encoder des membres de classe privée en JSON en PHP ?

Linda Hamilton
Libérer: 2024-11-26 11:26:14
original
165 Les gens l'ont consulté

How Can I Encode Private Class Members into JSON in PHP?

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); 
}
Copier après la connexion

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;
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal