Удобная работа с конфигурационными файлами в Yii

В публикации: Где хранить секреты?, мы говорили как работать с чувствительными данными. Давайте внесем небольшие изменения в наш проект на Yii, который мы начали разрабатывать.

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

Установим пакет The Dotenv Component:

Создадим в корне проекта три файла:

.env

.env.local

env.php

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

Файл .env.local содержит уже значения этих переменных, которые будут использоваться при работе приложения. Его необходимо добавить в файл .gitignore, чтобы эти данные не утекли дальше нашей среды.

Файл env.php содержит логику работы с переменными среды. Она пока примитивная, но чтобы понять, как это работает, этого достаточно. Дальше мы усложним его.

Удалим из файлов yii в корне проекта и index.php в директории web следующие строки кода:

А после строки:

В index.php из директории web добавим;

А в yii, после строки:

Добавим:

А теперь разберем сам файл env.php

Первые три строки кода, мы разобрали в этой публикации. Функция:

Возвращает значение переменной окружения, в которую мы записали с помощью «The Dotenv Component«.

Мы немного модифицировали объявление глобальных констант Yii.

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

Вместо ручной установки значения константы, мы вызываем функцию env(), которая возращает нам значение переменной окружения, указанное в аргументе.

Исходники: https://github.com/nvrsk-yii2/app

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

Об авторе

Дмитрий Ли

Катаюсь на велосипеде, фотографирую. Люблю RESTful и Linux, пишу для web, в основном на PHP.

Просмотреть все сообщения

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

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