Я занимаюсь разработкой игрового приложения и использую Symfony 2.0. У меня много AJAX-запросов к бэкэнду. И больше ответов - это преобразование сущности в JSON. Например:
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');
}
}
И все мои контроллеры делают одно и то же: получают сущность и кодируют некоторые из ее полей в JSON. Я знаю, что могу использовать нормализаторы и кодировать все права. Но что, если у сущности есть циклические ссылки на другую сущность? Или граф сущностей очень большой? У вас есть какие-нибудь предложения?
Я думаю о некоторой схеме кодирования для сущностей ... или использовании NormalizableInterface
, чтобы избежать зацикливания ..,