плюсы: удобно (компактно), гибко, не оседает в контейнере минусы: создаётся кложура (дорого), не сериализуется, плохо применимо для мидлварей с зависимостями, которые требуется взять из контейнера
плюсы: удобно (компактно), гибко, не оседает в контейнере минусы: создаётся кложура (дорого), не сериализуется, плохо применимо для мидлварей с зависимостями, которые требуется взять из контейнера
минусы: создаётся кложура (дорого) - не дорого плохо применимо для мидлварей с зависимостями, которые требуется взять из контейнера - легко fn () => container->get(MyMiddleware::class, [$pram1, $param2])
Но лучше для мидлтварей, которые требуют ручных параметров, писать обертки. Обертка кешируется в контейнере и может переиспользоваться другими мидлтварями. Хороший пример - форматтеры. Вместо new FormatDataResponse(new JsonDataResponseFormatter) используется FormatDataResponseAsJson::class
Что еще раз доказывает, что передача параметров - это зло. С параметрами каждый раз нужно создавать новый инстанс. При работе с рр вообще потери будут хорошо заметны.