Conversion d'un objet PHP en JSON
Prenons la classe User suivante.
class User
{
public $email;
public $name;
public $password;
public function __construct($email, $name, $password)
{
$this->email = $email;
$this->name = $name;
$this->password = $password;
}
//Getters, Setters
}
Nous pouvons encoder l'objet dans un format json en utilisant la fonction json_encode
$user = new User("john.doe@example.com", "johnDoe", "john123");
echo json_encode($user);
Ce code affichera la ligne suivante
{"email":"john.doe@example.com","name":"johnDoe","password":"john123"}
Cependant si les propriétés de l'objet sont privées, le code précédent afficherait un objet vide
class User
{
private $email;
private $name;
private $password;
public function __construct($email, $name, $password)
{
$this->email = $email;
$this->name = $name;
$this->password = $password;
}
//Getters, Setters
}
Affichage :
{}
Pour résoudre ce problÚme, il faut utiliser l'interface JsonSerializable
Il faut ensuite implémenter la fonction jsonSerialize() en retournant un tableau (array) avec les propriétés.
class User implements JsonSerializable
{
private $email;
private $name;
private $password;
public function __construct($email, $name, $password)
{
$this->email = $email;
$this->name = $name;
$this->password = $password;
}
//Getters, Setters
public function jsonSerialize()
{
return
[
'email' => $this->email,
'name' => $this->name,
'password' => $this->password,
];
}
}
Commentaires
Enregistrer un commentaire