Точное описание пакета Symfony в сложном веб-приложении

Я новичок в версии 2 из платформы Symfony. Я сделал несколько проектов с v1, но теперь пытаюсь найти новую версию и ее функции. Я прочитал концепцию Bundles, но цель для меня пока не очень понятна.

Скажем, у вас есть большое веб-приложение, например CRM. Как выглядят пучки? Это будет NewsletterBundle (для отправки информационных бюллетеней), ContactManagementBundle (для управления контактами), UserBundle (для редактирования пользователей и их разрешений).

Или это будет меньше, например, EmailBundle (для обработки всего трафика электронной почты), CRMBundle (для ввода всего вашего CRM-кода), PermissionsBundle, ApiBundle.

Ответы

Ответ 1

Мне нравится думать так: пакет должен представлять определенную функцию или набор подобных функций для проекта.

Ваш первый пример - лучшее использование пакетов, чем ваш второй пример, потому что назначение каждого пакета больше определено. Хотя можно использовать один CRMBundle для всего, вы бы не воспользовались возможностью Symfony организовать свой код. Кроме того, если вы хотите перенести код вашего информационного бюллетеня на новый проект, но не весь код CRM, вам будет проще копировать рассылку NewsletterBundle и копировать по CRMBundle, а затем обрезать его.

Когда вы думаете о проекте Symfony2, иногда вы хотите забыть все, что знаете о symfony 1.x, поскольку они используют совершенно разные подходы к решению многих проблем. Например, в symfony 1 было принято создавать приложение "frontend" и "backend" для проекта, и каждое приложение, очевидно, содержит логику, специфичную для этих частей проекта. Таким образом, у вас может быть контроллер Newsletter как в интерфейсе, так и в сторонних приложениях. В Symfony2 вам лучше использовать только один комплект бюллетеней, но с двумя контроллерами (возможно, с именем "frontend" и "backend" ). Опять же, непосредственной выгодой для этого является то, как многократно используется ваш код.