oop — Как загрузить конфигурационные файлы PHP с помощью автозагрузчика

У меня есть проект унаследованного кода, который я почти успешно преобразовал, чтобы использовать автозагрузчик, а не несколько миллиардов операторов include и require.

Единственная остающаяся проблема, которая у меня есть, — это файл конфигурации, который настраивает некоторые глобальные вещи конфигурации. Как и сейчас, это простой PHP, который загружает переменные, необходимые приложению.

Моя идея сделать эту работу — преобразовать ее в класс с константами классов для «глобальных» данных. Выполнение постоянных вызовов класса вызовет автозагрузку класса config и поставит все под контроль автозагрузчика.

У меня вопрос, является ли это лучшим способом приблизиться к этому, и если другие сделали что-то подобное?

Поэтому в моем приложении вместо вызова чего-то подобного для доступа к переменным конфигурации.

$GLOBALS['conf']['thingy'];

Это стало бы чем-то вроде этого.

Config::THINGY

Где вещи класс конст.

class Config {
const THINGY = 'yes, this is it';
}

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

2

Решение

Вы определенно на правильном пути. Как и во всем, что связано с программированием, существует 1 миллион + 1 способ облысения кошки, здесь несколько опций / некоторая информация.

YAML: Интенсивно используется фреймворками, такими как Symfony. Если вы не используете каркас SF, вы можете легко реализовать подставку вдоль SF Yaml синтаксический анализатор. Поддерживает иерархии.

JSON: Отличный способ поддерживать параметры конфигурации, легко переносимый. Поддерживает иерархии.

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

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

константы классаНичего плохого в этом подходе нет, однако можно утверждать, что любой из параметров конфигурации был бы немного «чище» и более переносим.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector