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

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

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

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

1 ответов


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

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

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