Хорошая практика для выбора файла веб-конфигурации, сохраненного в файле php? - PullRequest
0 голосов
/ 03 января 2019

Здравствуйте. Я хочу сохранить конфигурацию моей веб-страницы в файле php. Идея заключается в том, что конфигурация доступна независимо от того, есть ли соединение с базой данных или нет.Я хочу быть в php-файлах для большей безопасности, даже если нет файла, запрещающего чтение файла (json, txt ...).Мне нужно редактировать значения или добавлять новые динамически по странице, а не прокручивать файлы.

Для решения моей проблемы я нашел 2 метода: 1-й для записи всего в виде массива:

<?php return array(
'host' => 'localhost',
'username' => 'root', );

2-й для записи всего в базу данных с плоскими файлами, но я не нахожу тот, который записывает файлы в php, кроме: Эта библиотека базы данных с плоскими файлами CodeIgniter Кто не может работать одинбез CodeIgniter.

По сути, я пришел ко второму варианту, если найду что-то похожее на пример.1-й вариант подразумевает использование 1 файла, который будет сложно обслуживать, и при записи можно что-то сломать.Вы также можете предоставить другие параметры для динамического изменения значений и записи их.

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Первый способ - хорошее решение.Таким образом, вы можете создать несколько конфигурационных файлов, которые являются просто массивами.Если конфигурация содержит конфиденциальную информацию, вы можете использовать скрытые файлы .env, а в своей конфигурации вы можете обратиться к этим значениям .env.Таким образом, вы можете иметь несколько конфигураций для нескольких сред без изменения самих файлов конфигурации.

У Laravel есть хороший подход к этой проблеме, imho.https://github.com/laravel/laravel

Пример из laravel:

config / database.php

'sqlite' => [
    'driver' => 'sqlite',
    'database' => env('DB_DATABASE', database_path('database.sqlite')),
    'prefix' => '',
    'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
], 

Второе значение env () представляет значение по умолчанию.Фактическое значение находится в файле .env, который находится вне контроля версий.

0 голосов
/ 03 января 2019

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

Class Core { /** @var array $registry Static array for registry variables */ public static $registry = []; }

Теперь, когда вы хотите загрузить конфигурацию, вы можете просто использовать класс Core:

Core::$registry['config'] = include('./config.php');

И теперь, когда вам требуется конфигурация, вы можете просто получить доступ к массиву следующим образом:

Core::$registry['config'][%your_array_path_for_your_config_item%];

Знайте, что это можно использовать и для многих других вещей, подумайте также о сохранении ваших отправок и других переменных времени выполнения здесь.

...