2012-02-28 1 views
3

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

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

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

ответ

3

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

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

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

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

+0

Спасибо, что было полезно для понимания некоторых вещей. Теперь я должен перейти в sumfony2 –

1

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

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

Смежные вопросы