Настройки

Настройки хранятся в папке config/app.php.

# config/app.php
return [
    // …
    'Contacts' => [
        'phone' => '123456789',
        'email' => 'mail@example.ru'
    ],
];

Получить указанные настройки можно через метод Configure::read().

use Cake\Core\Configure;

Configure::read('Contacts.phone'); // 123456789
Configure::read('Contacts.email'); // mail@example.ru

Если указанная настройка не задана, то код вернёт «null».

Также можно задать значение по умолчанию.

// Если 'Contacts.phone' не задан, то метод вернёт текст "12345"
Configure::read('Contacts.phone', '12345');

Подключение файлов настроек происходит в файле «config/bootstrap.php».

Изменить или добавить настройки

Изменить или добавить настройки можно через метод Configure::write().

if ($city == 'Москва') {
    Configure::write('Contacts.phone', '987654321');
}

Configure::read('Contacts.phone'); // 987654321

Данный метод добавляет или изменяют настройку в  текущем коде, т.е. в самом файле « config/app.php       » он не делает никаких изменений.

Настройки в отдельном файле

Задать свой файл настроек можно в файле app/bootstrap.php через метод Configure::load().

# app/bootstrap.php
try {
    Configure::config('default', new PhpConfig());
    Configure::load('app', 'default', false);

    // Подключение «config/custom.php»
    Configure::load('custom');
}

Теперь настройки будут загружаться с файлов «config/app.php» и «config/custom.php». Если один и тотже параметр будет указан в обоих файлах, то будет загружаться тот, который указан в «config/custom.php».

Проверить настройку на существование

Проверить, что указанная настройка задана в файле, можно через метод Configure::check().

if (Configure::check('Contacts.fax')) {
    // …
}

Метод Configure::check() возвращает «true» или «false».

Выводить ошибку (исключение), если не задана настройка

Выводить ошибку (исключение), если не задана настройка можно через метод readOrFail().

Configure::readOrFail('Contacts.address');

Если не задана настройка «Contacts.address», то код вернёт исключение «RuntimeException» с текстом «Expected configuration key "Contacts.address" not found».