включить php файл только один раз в проект

У меня есть файл (config.php), в котором содержатся данные конфигурации моего приложения:

<?php

return [
    // here is my associative configuration array
    // having also Closures in it
];

Я отправляю этот файл в мой класс Config, который будет манипулировать моими данными, и это будут мои интерфейс для информации о конфигурации.

Config::init(require('config.php'));

Таким образом, я не хочу получать доступ к информации о конфигурации каким-либо иным способом, кроме использования общедоступных методов класса Config.

Итак, мне нужно включить config.php только один раз в мой проект (при отправке в класс Config).

Решение было бы с определением константы в верхней части файла:

<?php

define('config', true);

return [
    // here is my associative configuration array
    // having also Closures in it
];

Таким образом, включение config.php дважды приведет к ошибке, потому что константа config определена дважды, что недопустимо в php.

НО, константа 'config' может быть легко удалена перед вторым включением. С помощью:

runkit_constant_remove('config');

Вот почему мне нужно попросить вас о более безопасном / надежном решении, которое может гарантировать, что информацию о конфигурации можно получить только из класса Config.

0
задан Valentin Tanasescu 25 June 2019 в 20:35
поделиться

1 ответ

Я предлагаю сделать это с INI-файлом. Простой пример ниже:

config.ini

[app]
user = myuser
pass = 123123
stage = 1

ваша конфигурация init:

Config::init(parse_ini_file('app.ini'));

parse_ini_file document щелкните здесь

0
ответ дан Tomaž Puhar 25 June 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: