https://github.com/Kilte/configuration
Container
Класс Kilte\Configuration\Container -- главная часть либы.
Он предоставляет метод load(), который принимает имя файла для загрузки (без расширения) и возвращает объект класса Kilte\Configuration\Resource.
Resource
Класс Kilte\Configuration\Resource выполняет роль обертки над загруженным конфигом.
Он реализует интерфейс \ArrayAccess, что позволяет обращаться к объектам как к массивам и также предоставляет два дополнительных метода:
mixed get(string $key[, mixed $default = null])
Возвращает значение по ключу. Если ключа нет, то вернет то, что лежит в $default.
array all()
Возвращает все значения.
Loader
Kilte\Configuration\FileLoader отвечает за загрузку файлов.
Конструктор класса принимает два экземпляра классов, которые реализуют следующие интерфейсы:
Kilte\Configuration\Locator\FileLocatorInterface
Kilte\Configuration\Parser\ParserInterface
Locator
Kilte\Configuration\Locator\FileLocator отвечает за поиск файла.
Конструктор принимает следующие аргументы:
Массив директорий, где следует искать.
Массив поддерживаемых расширений.
Можно создать свой локатор, который реализует Kilte\Configuration\Locator\FileLocatorInterface
Parser
Отвечает за конвертацию содержимого конфига в массив.
По умолчанию доступны следующие парсеры:
JsonParser
IniParser
YamlParser (нужен Symfony/Yaml компонент)
Можно создать свой парсер, реализовав Kilte\Configuration\Parser\ParserInterface
Пример
require __DIR__ . '/vendor/autoload.php';
use Kilte\Configuration\Container;
use Kilte\Configuration\FileLoader;
use Kilte\Configuration\Locator\FileLocator;
use Kilte\Configuration\Parser\JsonParser;
$locator = new FileLocator([__DIR__], ['json']);
$parser = new JsonParser();
$loader = new FileLoader($locator, $parser);
$container = new Container($loader);
var_dump($container->load('composer')->get('name'));
// string(19) "kilte/configuration"