Новое приложение Yii в один clone. YiiBoilerplate

от автора

Я думаю, что у любой команды или самостоятельного разработчика на определенном этапе работы формируется некая базовая архитектура приложения, с которой ему или им удобно работать и которую можно перекидывать из проекта в проект. Мне в свое время на глаза попалось архитектурное решение команды CleverTech под названием YiiBoilerplate. Поскольку я не нашел публикаций на хабре по этой теме, предлагаю небольшой пост.
Вкратце особенности данного шаблона:

  • админка и Frontend реализованы в качестве полноценных приложений
  • общие настройки, модели и компоненты для Backend и Frontend можно хранить в одном месте
  • есть возможность переключения между настройками для Dev и Prod одной строчкой в командной строке

Под катом основная соль данного решения. Текста немного. Предлагаю обсудить иные решения и поделиться собственным опытом по теме архитектуры приложений Yii в комментариях.

Про разделение Backend и Frontend

Архитектура YiiBoilerplate предполагает, что Backend и Frontend проекта реализуются в качестве отдельных приложений со своими настройками. Приложения расположены соответственно в папках Backend и Frontend.

/    backend/    frontend/ 

Их структура абсолютно идентична традиционной в Yii-приложении.

 /frontend     components/     config/                 controllers/     extensions/     lib/     models/      modules/         runtime/      views/     www/        index.php         

При этом общие компоненты, настройки и модели можно вынести в отдельную директорию Common. Там же находится и сам фреймворк.

/    backend/     frontend/     common/       components/       config/               data/       extensions/               lib/                  Yii/       messages/       models/       widgets/ 

То есть, если, допустим, мы используем одну и ту же модель User как в админке, так и на фронте. В этом случае, можно эту модель поместить в common/models/User.php и она будет доступна и там, и там. Аналогично, к примеру, для настроек базы данных.

Про конфигурации для Dev и Prod

Тут основная фишка заключается в том, что в директориях conf, есть подраздел environments и файл конфигурации с постфиксом -env.

config/         environments/             main-dev.php              main-prod.php         main-env.php          main.php 

Тут надо отметить, что авторы YiiBoileplate позаботились и добавили в рут репозитория скрипт runpostdeploy, обращаясь к которому из командой строки runpostdeploy EnvType можно сразу переключать настройки приложения с Dev на Prod. EnvType в конкретном случае dev или prod. Это полезно, когда возникает необходимость переносить проект с хоста разработки на боевой.

И напоследок полная структура шаблона, где звездочками отмечены папки, добавленные в gitignore:

/     backend/     components/     config/         environments/         main-private.php *         main-prod.php                     params-private.php *         params-prod.php             main-env.php *             main-local.php *             main.php             params-env.php *             params-local.php *             params.php             test.php     controllers/     SiteController.php     extensions/         behaviors/         validators/     lib/     models/         FormModel.php     modules/     runtime/ *     views/     layouts/     site/     widgets/     www/         assets/ *         css/         images/         js/         themes/         index.php         .htaccess common/     components/     config/         environments/             params-private.php *             params-prod.php         params-env.php *         params-local.php *         params.php     data/     extensions/     behaviors/     validators/     lib/         Behat/         Pear/         Yii/         Zend/     messages/     models/     widgets/     console/     commands/     components/     config/     environments/     lib/     migrations/     models/     runtime/ *     yiic.php frontend/     components/     config/         environments/             main-private.php *             main-prod.php             params-private.php *         params-prod.php         main-env.php *         main-local.php         main.php         params-env.php *         params-local.php *         params.php         test.php     controllers/     extensions/     behaviors/     validators/     lib/     models/     modules/     runtime/ *     views/     layouts/     site/     www/     assets/ *     css/     files/     images/     js/     less/     index.php     robots.txt     .htaccess     tests/         bootstrap/         FeatureContext.php         YiiContext.php     features/         Startup.feature     behat.yml INSTALL.md README.md runbehat runpostdeploy yiic yiic.bat 

ссылка на оригинал статьи http://habrahabr.ru/post/180679/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *