PHP: JsonSerializable
Desde a versão 5.4 do PHP ficou mais fácil transformar entidades em JSON através da função json_encode(). Basta implementar a interface JsonSerializable, no qual o único método que precisa ser implementado pela subclasse é o jsonSerialize.
class User implements \JsonSerializable {
private $username;
private $firstName;
private $lastName;
...
public function jsonSerialize() {
return array(
'username' => $this->username,
'firstName' => $this->firstName,
'lastName' => $this->lastName,
'fullName' => "{$this->firstName} {$this->lastName}"
);
}
}
Serializando:
$user = new User();
$user->setUsername("rogeriolino");
$user->setFirstName("Rogério");
$user->setLastName("Lino");
echo json_encode($user);
Resultado:
{
"username": "rogeriolino",
"firstName": "Rogério",
"lastName": "Lino",
"fullName": "Rogério Lino",
}
Essa implementação se torna muito útil para desenvolvimento de APIs RESTful e ajax responses (json response).