Я считаю, что конфиг, это конфиг. Он выше всех объектов и всего остального.
Подходит для религиозной проповеди, но не для техописания.
Чтобы решить каким должен быть конфиг нужно знать его роль в приложении в целом, нужно знать как устроено приложение или как предполагается его устроить. Я предлагаю конфигурацию, в которой объекты максимально независимы друг от друга и взаимодействуют только на основе интерфейсов.
В приложении существуют 3 базовых класса: factory, config, application.
//index.php
$factory = new Factory_class();
$config = new Config_class();
$application = new Application_class($factory, $config);
$application->run();
Остальные (дочерние) объекты генерирует фабрика,
и конфигурацию в объекты передаёт она же. Дочерние объекты не обмениваются никакими данными конфигурации. Именно поэтому я говорю что нет никакой конфигурации приложения в целом, есть только конфигурации отдельных объектов. Мы можем вообще разбить наше приложение на дочерние объекты и передавать каждому конфиг прописав это явно в коде.
instance1 = ClassA + config_of_instance1.php
instance2 = ClassB + config_of_instance2.php
instance3 = ClassB + config_of_instance3.php
и т.д.
если же два объекта используют одну и ту же настройку (например путь к временной папке) мы должны продублировать этот параметр в оба конфига.
Если же как ты говоришь приложение не содержит объектов то и схема работы конфига будет другой.
Это означает, что все классы нужно реализовывать в соответствии с этим. Ничего стороннего взять нельзя.
Да. Ну либо использовать объект с интерфейсом ArrayAccess - большинство кода понимает хэш-массивы.
не всё полезно, что в swap полезло