Плохая ли это идея конфигурировать классы/сервисы с помощью замыканий, а не, например, массивов? Во многих библиотеках есть возможность загрузить конфигурацию из массива (или любого файла конфигурации). Не будет ли лучшей идеей конфигурировать сервис замыканием или любым другим вызываемым объектом (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: убрал упоминание фреймворков, чтобы не вводить в заблуждение. Речь идет о библиотеках/компонентах без внешних зависимостей.

21 Авг 2019 в 07:06
161 +1
0
Ответы
1

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

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

Однако, есть и некоторые недостатки использования замыканий для конфигурации. Например, это может сделать код менее предсказуемым и труднее отлаживаемым, особенно если логика в замыкании сложная и труднопонимаемая. Также, использование замыканий может сделать код менее переносимым и более зависимым от конкретной реализации.

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

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 424 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир