Encodera

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

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

Оглавление

Настройки

Настройки — значения, которые различаются на разных компьютерах или меняются без правки кода: адрес базы данных, режим отладки, название сайта. В 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.

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

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