У меня есть приложение, которое разработано в Symfony2 . Теперь структура для него такова:
Является ли эта структура нормально? Или связки используются как функция форума – ForumBundle – который включает в себя все уровни ( контроллеры , службы , логику домена и постоянство ), связанные с форумом.
Нет никаких жестких и быстрых правил о том, как структурировать ваше приложение с помощью пакетов, но вот что я пришел после разработки на Symfony2 почти год.
Используйте один пакет приложений. Сначала я начал с нескольких пакетов, таких как CommonBundle
, UserBundle
, MainBundle
, BlogBundle
, ContactBundle
и т. Д. В конце концов это оказалось не очень удобным, поэтому я перешел на один пакет приложений – AppBundle
.
Вы можете упорядочить свой код аккуратно, используя подзоны. Например, бэкэнд-контроллеры перейдут в AppBundle\Controller\Backend
.
Обратите внимание, что я говорю об одном конкретном наборе приложений , который уникален для конкретного приложения и не имеет смысла повторно использовать его в другом месте. Вы все же можете развернуть отдельные пакеты для многоразового использования и поместить их в инфраструктуру поставщиков.
Не храните специальные материалы Symfony из пучков. Нет необходимости иметь набор для модели и классов Service Layer в пакете, если они не являются специфичными для Symfony2. См. Этот вопрос и мой ответ для получения дополнительной информации.
Как сказал Эльнур, использовать один AppBundle – хорошая практика.
Один пучок реализует сам шаблон MVC, поэтому я считаю, что не рекомендуется использовать пакеты для разделения ваших слоев.
Я думаю, что лучший способ использовать пакеты – думать «с открытым исходным кодом». Если создаваемая вами функция достаточно универсальна для публикации или для повторного использования в будущем проекте, поместите эту функцию в комплект. Этот способ заставит вас создавать функцию без какого-либо бизнес-правила, которое принадлежит вашему AppBundle.
Связки – это кирпичи
Существуют различные способы организации структуры приложений для ваших проектов. Но если вы хотите распространять свои пакеты и следовать лучшим практикам Symfony, то пакеты больше возможностей, чем разделение пользовательского интерфейса. Подробнее о пакетах читайте в документации .
У меня есть два проекта со следующими структурами: оба действительны: