Какова идея создания папок в среде Yii2 и как ее использовать?

Я читал Yii2 документацию несколько раз. Я также googled, и я не мог найти ничего полезного.

Проблема заключается в том, что я не понимаю концепцию папок среды. Позвольте мне объяснить:

  • Я могу использовать ветки в Git (для dev, постановки и производства)
  • * - local.conf файлы игнорируются Git, и в любом случае они не будут помещаться в стадию или производство

Почему мне приходится дублировать все мои контроллеры, представления и другие файлы в среде /dev и среде /prod ?

В каких папках мне действительно нужно сделать свое развитие?

Что такое процедура развертывания для папок среды? Должен ли я звонить init каждый раз после того, как я нажимаю свои изменения на рабочий сервер?

Ответ 1

Скорее всего, вы проигнорируете папку с окружением, если у вас нет особой необходимости в противном случае.

Весь ваш код должен войти в папки common, frontend, console или backend. common appart, это доступные по умолчанию точки входа в приложение, где вы поместите логику контроллера. Вы, очевидно, не должны использовать их все, просто используя frontend может хватить в зависимости от вашей конкретной потребности.

Но опять же, если вы выбрали продвинутый шаблон, возможно, использовать комбинацию. Например, common, backend и frontend

Папка окружения

Папки среды соответствуют параметрам, которые у вас есть при запуске ./init. Это можно назвать:

  • 0) Разработка
  • 1) Производство

Они содержат все файлы, которые редактируются и/или добавляются при запуске команды ./init. К ним относятся все файлы, которые игнорируются (и поэтому никогда не создаются) с помощью VCS (git).

Мы говорим о файлах вроде файлов * - local.php, которые по очевидным причинам никогда не должны быть версиями. Но также сценарии ввода, которые меняются в зависимости от среды, которую вы инициализируете. Например, вы хотите отлаживать и выходить из системы в процессе производства, но в процессе разработки. Это то, что вы не можете настроить на уровне файла конфигурации, поскольку они должны быть установлены до того, как макет приложения Yii или что вы просто знаете, должен быть установлен по умолчанию каждый раз, когда среда инициализируется.

Можно представить себе добавление другой среды под названием pre-production, например, которая будет инициализировать ваше приложение точно так же, как производственная среда, кроме включенного ведения журнала. Для этого вы скопировали папку environments/prod, измените сценарии записи на свои нужды и добавите опцию в environments/index.php.

./init нужно запускать только один раз после клонирования ветки. Если вы большой на CI, то вашему CI-серверу, возможно, потребуется запустить ./init script при каждом запуске. Это может зависеть от того, как вы его настроили. Вам нужно будет запустить его снова, если вы внесли изменения в папки окружения, которые вы хотите применить.

общий, консоль и * концы

Это вы, наверное, уже знаете, но просто заставляете кого-то задаваться вопросом.

  • common: содержит логику, общую для всего вашего приложения, из файлов конфигурации в модели
  • интерфейс: все, что относится к вашему интерфейсу веб-интерфейса, также может иметь собственные модели и т.д.
  • backend: тот же, что и выше, но допускает раздельную логику между интерфейсом и бэкэнд-приложением. Консоль
  • : для доступа к вашему приложению через командную строку с помощью ./yii controller/action

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

Ответ 2

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

Например, в файле frontend/web/index.php вы хотите установить YII_ENV в prod в рабочей среде и dev в среде разработки. В папке environment этот файл уже доступен с этими конкретными настройками в определенных папках.

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