Архитектура Symfony2

1

Я разрабатываю приложение с Symfony2, которое имеет 3 основные части, называемые frontoffice, backoffice, admin. Я думал создать три отдельных пакета: FrontOfficeBundle, BackOfficeBundle, AdminBundle, но Symfony docs говорит, что каждый комплект не должен иметь никакого отношения друг к другу. Объект уже является общим свойством и, вероятно, некоторыми моделями. Я мог бы создать SharedBundle, но это не имеет смысла. Я помню, когда я создал приложение через 2 года, когда у меня было 15 пачек, и все связаны друг с другом, и я по опыту знаю, что это кошмар.

Должен ли я иметь только один пакет AppBundle и разделение логики в папках, например. Контроллер /Admin; Контроллер/FrontOffice, Контроллер /BackOffice?

Какой лучший подход?

  • 0
    Да, у вас должен быть только один AppBundle для логики вашего приложения.
  • 0
    Вам лучше сначала прочитать лучшие практики. symfony.com/doc/current/best_practices/...
Показать ещё 1 комментарий
Теги:
architecture

2 ответа

1

Все о SRP и DRY

Это не помешает создать пакет, поэтому сделайте отдельный набор для нужного вам материала в нескольких пакетах, например, я, как правило, создаю EntityBundle, который содержит сущности и их репозитории (в качестве службы).

Конечно, вы можете просто использовать один AppBundle, но, пожалуйста, не вводите свою логику в контроллеры → создавайте многоразовые сервисы! Внесите необходимые вам услуги в ваш контроллер (который тоже должен быть сервисом).

Альтернативы базовым методам контроллера

0

Нет такого подхода, как лучший подход.

Однако вместо группировки по типу класса (Controller, Command, Form, Templates) внутри каталога мне нравится создавать один "компонентный" каталог для каждого действия запроса. Поэтому я бы

Action
  FrontOffice
  BackOffics
  Admin
    User
      UserController.php
      UserFormType.php
      UserTemplate.html.twig

Группировка файлов таким образом действительно сокращает время нахождения различных файлов. Это "лучший" подход? Неа. Но это работает для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню