2014-04-12 4 views
1

У меня есть четыре контроллера REST с теми же шестью способами. Единственное различие между ними - это сущность, которую они используют.Лучшая практика, чтобы избежать повторения кода (symfony2)

Я думал о некотором прецизионном абстрактном контроллере с этими методами и с одним свойством, которое, судя по всему, будет сущностью. Каждый из контроллеров REST собирается расширить этот абстрактный контроллер и только перезаписать это свойство.

Это моя идея, но я не уверен, что это лучшая практика, особенно в Symfony2.

+0

Я думаю, вы можете это сделать, а не проблемы для лучшей практики, но не знакомы с 'Symfony' tho. –

+0

Лучшая практика заключается в том, чтобы стремиться, но не жить, поскольку, даже если у вас есть пучок, который чист к «лучшей практике», он будет улучшен ... как будет лучше всего практиковать. Создайте приложение bundle \ app как можно лучше, а затем улучшайте то, что вы знаете, когда время проходит. Не полагайтесь полностью на лучшую практику, которую вы не полностью понимаете/верите. – qooplmao

+0

Вы пробовали с не абстрактным родительским классом? –

ответ

0

В проекте, над которым я работаю с Symfony2 и FOSRestBundle, мы имеем ту же ситуацию.

Нам удалось получить все в базовый класс контроллера, который расширяет FOSRestController и расширяется всеми другими контроллерами. Если вы используете sensio/framework-extra-bundle, вам даже не нужно писать код для извлечения одного объекта. Мы также используем гибридную конфигурацию с MySQL и Elastic Search, а базовый класс контроллера реализует методы запроса ElasticSearch, включая информацию ACL, так что логика в основном находится в базовом контроллере.

Смежные вопросы