Головная боль при проектировании организации пакетов Symfony2 - PullRequest
4 голосов
/ 27 февраля 2012

Я разрабатываю SaaS, где арендаторы являются как настоящими, так и администраторами (нами). Так что «fornt-end» и «back-end» - это одно и то же. В любом случае, согласно многим другим вопросам, пакеты - это способ структурировать ваш проект многократно.

Я действительно не думаю, что наши пакеты будут использоваться повторно, но мне все еще нужен способ разбить проект на пакеты, чтобы быстро найти файлы, над которыми мы хотим работать. Заявка должна:

  • CRUD для клиентов - арендаторы должны иметь возможность управлять своими клиенты / партнерства
  • CRUD для клиентов теги и ключевые слова (способ классификации их клиентов)
  • CRUD для широковещательных уведомлений, отправленных нами (система обмена сообщениями)
  • CRUD для арендаторов - мы должны иметь возможность управлять нашими арендаторами

Итак, как организовать мои связки? Может быть:

  • CoreBundle : только модели Doctrine2
  • ResourcesBundle : шаблоны, js, css, изображения
  • SystemUserBundle : управление арендаторами и клиентами CRUD
  • MessagingBundle : система сообщений

Как этот дизайн можно улучшить?

1 Ответ

10 голосов
/ 27 февраля 2012

Согласно документации Symfony2:

В Symfony2 комплект похож на плагин, за исключением того, что весь код в Ваше приложение будет жить внутри пакета. Связка больше ничего чем каталог, в котором находится все, что связано с определенной функцией, включая классы PHP, конфигурацию и даже таблицы стилей и Файлы Javascript (см. Система комплектов).

Лично, следуя этому описанию, я бы настроил SystemUserBundle так, чтобы он содержал модель Doctrine2 и шаблоны / js / css / images, которые конкретно относятся к управлению клиентами, а не разделял их на CoreBundle и ResourceBundle. Однако разделение вашего приложения на SystemUserBundle и MessagingBundle звучит как разумный подход.

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

Я не думаю, что документы Symfony2 подробно разбираются в пакетах (пока!), Но в случае, если вы не нашли все соответствующие разделы, мне известны следующие:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...