Настройки
Настройки — значения, которые различаются на разных компьютерах или меняются без правки кода: адрес базы данных, режим отладки, название сайта. В CakePHP они хранятся в папке config.
Три файла
| Файл | Что в нём | В репозитории |
|---|---|---|
config/app.php | Настройки по умолчанию, общие для всех | Да |
config/app_local.php | Настройки этого компьютера: пароли, ключи | Нет |
config/.env | Переменные окружения, необязательный файл | Нет |
app_local.php создаётся сам при установке проекта из образца app_local.example.php. Значения из него заменяют значения из app.php.
Как устроен файл
Каждый файл возвращает массив с разделами:
// config/app_local.php
return [
'debug' => true,
'Security' => [
'salt' => 'длинная-случайная-строка',
],
];debug включает режим разработки: подробные страницы ошибок и панель DebugKit. Security.salt — секретная строка для шифрования, у каждого проекта своя.
Чтение настроек
use Cake\Core\Configure;
$debug = Configure::read('debug');
$salt = Configure::read('Security.salt');Configure::read() доступен в любом месте кода. Точка в ключе ведёт вглубь массива: Security.salt — это ключ salt раздела Security.
Свои настройки
Добавьте в config/app.php свой раздел:
// config/app.php
'Blog' => [
'name' => 'Мой блог',
'perPage' => 10,
],Используйте его в действии контроллера:
$this->set('siteName', Configure::read('Blog.name'));
$perPage = Configure::read('Blog.perPage', 20);Второй аргумент — значение, если ключа нет. Название сайта теперь меняется в одном месте.
Переменные окружения
Функция env() читает переменную окружения — значение, которое задаёт сам сервер:
// config/app_local.php
'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),Если переменной DEBUG нет, берётся значение по умолчанию — true.
Файл .env
На компьютере разработчика переменные удобно держать в файле. Скопируйте config/.env.example в config/.env и раскомментируйте в config/bootstrap.php блок, который загружает этот файл. Формат файла:
export APP_NAME="blog"
export DEBUG="true"
export SECURITY_SALT="длинная-случайная-строка"После этого env('APP_NAME') вернёт blog.
Частая ошибка
Пароль базы данных или ключ платёжного сервиса, записанный в config/app.php, попадает в репозиторий и становится виден всем, у кого есть доступ к коду. Секреты храните в app_local.php или в .env — эти файлы перечислены в .gitignore.