Во многих библиотеках есть возможность загрузить конфигурацию из массива (или любого файла конфигурации). Не будет ли лучшей идеей конфигурировать сервис замыканием или любым другим вызываемым объектом (Class::__invoke(), например)?
Для иллюстрации:
class Router
{
public function __construct(Closure $config)
{
$closure($this);
}
public function addRoute(...$params) {
// some code
}
}
Конфигурация выглядит так:
return function($router) {
$router
->addRoute('/')
->setName('home')
;
// and so on....
}
И, наконец, вызов сервиса:
$router = new Router(include 'config/router.php');
$controller = $router->match('/some/path');
Не будет ли это проще, чем загружать статическую конфигурацию и разбирать эту конфигурацию уже в сервисе, вызывая публичные методы и по сути делая тоже самое?
UPD: убрал упоминание фреймворков, чтобы не вводить в заблуждение. Речь идет о библиотеках/компонентах без внешних зависимостей.