Достижение 3-уровневой архитектуры с помощью Symfony PHP - PullRequest
3 голосов
/ 28 февраля 2012

В школьных веб-проектах, которые я делал до сих пор, я строю свои приложения с трехуровневым подходом. Уровень данных, приложение и уровень представления. Я использовал эту архитектуру с Python и Java, и я хочу использовать ее также с PHP. Я был довольно строг в общении между уровнями, так как это были требования заданий, и я могу сказать, что я нахожу это довольно хорошим, поскольку, когда я однажды попытался переключиться с mySQL на Mongo db, это было довольно легко. Мне просто нужно было изменить код внутри функции моего объекта доступа к данным.

Как я уже говорил, я хочу написать приложение большего размера на php, и я скачал и установил Symfony2 Framework, который представляет собой MVC-фреймворк. Мое намерение состоит в том, чтобы протестировать приложение с исходным MySQL, а затем переключиться и протестировать его с Redis.

Итак, мой вопрос: Могу ли я использовать функциональность и все «полезности» фреймворка для написания приложения 3-уровневой архитектуры и как я могу разделить слои?

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Symfony2 не является средой MVC как таковой, это просто набор слабо связанных компонентов, прекрасно работающих вместе.Об этом есть ведущий разработчик сообщения в блоге .

Вы можете выбрать, насколько детализированы ваши пакеты, например, вы можете создать пакет с чисто доменными объектами, бизнес-логикой и интерфейсами.для репозиториев, DAO, что вы хотите.При желании вы можете предоставить картографическую конфигурацию вашего ORM по вашему выбору.Теперь вы можете создавать пакеты для стратегий доступа к данным, такие как пакеты, работающие с доктриной, другие с redis, реализующие интерфейсы репозитория.

Таким образом, вы можете сходить с ума от мелкозернистой структуры пакетов, но для простых приложений вы можете просто поместить все это в /src, или просто создать пакет со всеми реализованными там стратегиями доступа к данным и выбрать однув вашем приложении с конфигурацией комплектов.

Изучение подходов других комплектов также помогает ознакомиться с лучшими практиками. FOSCommentBundle или FOSUserBundle может быть хорошим местом дляначать.

2 голосов
/ 28 февраля 2012

Конечно.Хитрость заключается в том, чтобы обернуть ваш слой данных (или бизнес-объекты) в сервисы.Ваше приложение (так называемые контроллеры) взаимодействует с этими службами на основе пользовательского ввода и передает результаты на уровень презентации.

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

...