Несмотря на четкие требования к стандартной конфигурации из документации, она достаточна гибкая, чтобы сделать собственный вид конфигурации в зависимости от текущей необходимости. Начать можно с минимальной конфигурации (доступно с версии фреймворка 2.1.0).
Минимальная конфигурация
Найдите в файле index.php такую строчку:
require __DIR__ . '/../vendor/phphleb/framework/bootstrap.php';
Нужно заменить её на следующий аналог вместе с конфигурацией:
use Hleb\HlebBootstrap;
require __DIR__ . '/../vendor/phphleb/framework/HlebBootstrap.php';
$config = [
'common' => [
'debug' => true,
'allowed.hosts' => [],
'log.enabled' => true,
'max.log.level' => 'info',
'max.cli.log.level' => 'info',
'error.reporting' => E_ALL,
'timezone' => 'Europe/Moscow',
'routes.auto-update' => true,
'app.cache.on' => true,
],
'database' => [
'base.db.type' => 'mysql.name',
'db.settings.list' => [],
],
'main' => [
'session.enabled' => true,
],
'system' => [
'classes.autoload' => true,
],
];
(new HlebBootstrap(HLEB_PUBLIC_DIR, $config))->load();
Как видно названия файлов конфигурации здесь соответствуют ключам массива, это будет работать и для собственных настроек, если они ранее были вынесены в файлы (но указывать эти файлы уже не нужно напрямую). Теперь вместо похожей строчки из файла console в корне проекта добавляем анологичное, но немного отличающееся подключение конфигурации.
use Hleb\HlebBootstrap;
use Hleb\HlebConsoleBootstrap;
require __DIR__ . '/vendor/phphleb/framework/HlebBootstrap.php';
require __DIR__ . '/vendor/phphleb/framework/HlebConsoleBootstrap.php';
$config = [
// configuration //
];
(new HlebConsoleBootstrap(HLEB_PUBLIC_DIR, $config))->load();
Теперь можно удалить все файлы из папки config так как они больше не используются. В данном случае конфигурация для консольных команд может быть настроена отдельно.
Отдельные настройки по умолчанию
После выполнения предыдущего преобразования неплохо бы вынести всю конфигурацию в отдельный файл обратно, но преобразовать к любому необходимому формату. Например, необходимо, чтобы общие настройки хранились в файле 'default.php', а локальная и производственная среды различались только в тех настройках, где есть различия. Изменим в index.php получение конфигурации:
$config = require __DIR__ . '/../config/default.php';
И в console:
$config = require __DIR__ . '/config/default.php';
Содержимое новой конфигурации default.php:
return [
// configuration //
];
Но это еще не все, нужно разделить на 'dev.php' и 'prod.php' изменяемые данные. Для этого нужно изменить файл default.php:
<?php
$override = require (file_exists(__DIR__ . '/prod.php') ? __DIR__ . '/prod.php' : __DIR__ . '/dev.php');
$default = [
'common' => [
'debug' => true,
'allowed.hosts' => [],
'log.enabled' => true,
'max.log.level' => 'info',
'max.cli.log.level' => 'info',
'error.reporting' => E_ALL,
'timezone' => 'Europe/Moscow',
'routes.auto-update' => true,
'app.cache.on' => true,
],
'main' => [
'session.enabled' => true,
],
'system' => [
'classes.autoload' => true,
],
];
return [
'common' => array_merge($default['common'] ?? [], $override['common'] ?? []),
'database' => $override['database'],
'main' => array_merge($default['main'] ?? [], $override['main'] ?? []),
'system' => $default['system'],
];
Таким образом все недостающие настройки будут подставлены из файла prod.php или dev.php. Например параметр 'debug' точно нужно переносить в эти файлы, как и 'max.log.level'.