Je développe une application de jeu et j'utilise Symfony 2.0. J'ai de nombreuses requêtes AJAX vers le backend. Et la plupart des réponses convertissent les entités en JSON. Par exemple :
class DefaultController extends Controller
{
public function launchAction()
{
$user = $this->getDoctrine()
->getRepository('UserBundle:User')
->find($id);
// encode user to json format
$userDataAsJson = $this->encodeUserDataToJson($user);
return array(
'userDataAsJson' => $userDataAsJson
);
}
private function encodeUserDataToJson(User $user)
{
$userData = array(
'id' => $user->getId(),
'profile' => array(
'nickname' => $user->getProfile()->getNickname()
)
);
$jsonEncoder = new JsonEncoder();
return $jsonEncoder->encode($userData, $format = 'json');
}
}
Et tous mes contrôleurs font la même chose : récupérer une entité et encoder certains de ses champs en JSON. Je sais que je peux utiliser des normalisateurs et encoder toutes les entités. Mais que faire si une entité a des liens cycliques avec d'autres entités ? Ou si le graphe des entités est très grand ? Avez-vous des suggestions ?
Je pense à un schéma d'encodage pour les entités... ou à l'utilisation de NormalizableInterface
pour éviter de faire du vélo..,