Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Настройки и файл .env

Настройки — значения, от которых зависит работа сайта: его адрес, язык, доступ к базе данных. В CodeIgniter они хранятся в классах папки app/Config, по одному классу на тему. Значения, которые различаются на вашем компьютере и на сервере, переопределяют в файле .env.

Файлы настроек

ФайлЧто настраивает
app/Config/App.phpАдрес сайта, язык, часовой пояс
app/Config/Database.phpПодключение к базе данных
app/Config/Routes.phpМаршруты
app/Config/Filters.phpФильтры запросов
app/Config/Session.phpСессии
app/Config/Email.phpОтправку почты

Каждая настройка — публичное свойство класса с комментарием над ним.

Чтение настройки

Объект настроек возвращает функция config():

// app/Controllers/Home.php
public function index(): string
{
    return 'Адрес сайта: ' . config('App')->baseURL;
}

Главная страница покажет «Адрес сайта: http://localhost:8080/». Аргумент — имя класса из app/Config.

Свой файл настроек

Собственные значения — число статей на странице, название блога — удобно держать в отдельном классе:

php spark make:config Blog

Команда создаёт файл app/Config/Blog.php. Добавьте в него свойства:

// app/Config/Blog.php
namespace Config;
 
use CodeIgniter\Config\BaseConfig;
 
class Blog extends BaseConfig
{
    public string $name = 'Мой блог';
    public int $perPage = 10;
}

Теперь в любом месте проекта значение доступно как config('Blog')->perPage.

Переопределение в .env

Строка в .env заменяет значение свойства. Имя строки — имя класса строчными буквами, точка, имя свойства:

CI_ENVIRONMENT = development
 
app.baseURL = 'http://localhost:8080/'
blog.perPage = 5

Сам файл app/Config/Blog.php при этом не меняется, но config('Blog')->perPage вернёт 5. Так один и тот же код работает с разными значениями на разных компьютерах.

Режимы работы

Строка CI_ENVIRONMENT задаёт режим:

РежимКогда используют
developmentНа своём компьютере: подробные ошибки, панель отладки
testingПри запуске автоматических тестов
productionНа рабочем сервере: ошибки скрыты от посетителей

Если строки нет, действует production. Текущий режим печатает команда php spark env, в коде он доступен как константа ENVIRONMENT.

Частая ошибка

Файл .env содержит пароли и не должен попадать в репозиторий: в новом проекте он уже указан в .gitignore. Из-за этого на сервере его нет — после переноса проекта файл создают там вручную. Не пишите пароли в классах app/Config: эти файлы хранятся вместе с кодом и видны всем, у кого есть доступ к репозиторию.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.