Как сделать кастомную конфигурацию в HLEB2 фреймворке? Вопрос

30 Мая 2025 (ред)

Несмотря на четкие требования к стандартной конфигурации из документации, она достаточна гибкая, чтобы сделать собственный вид конфигурации в зависимости от текущей необходимости. Начать можно с минимальной конфигурации (доступно с версии фреймворка 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'.

fomiash fomiash + 221
Опубликовано в PHP фреймворк HLEB
К сожалению, ответов пока нет


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.