Я использую PHP-DI с фреймворком Slim. В Slim вы делаете сегмент маршрута необязательным, заключая его в квадратные скобки. Теперь, когда я настроил PHP-DI, когда я опускаю необязательный сегмент маршрута, я получаю эту ошибку:
Type: Invoker\Exception\NotEnoughParametersException
Message: Unable to invoke the callable because no value was given for parameter 1 ($limit)
Вот мой маршрут:
$app->get('/api2/products[/{limit}]', ['\App\Controllers\SampleProductController', 'show']);
Я не могу найти в документах PHP-DI ничего такого, что говорило бы о необязательной части, просто как получить значение именованного сегмента.
Автор PHP-DI здесь. Это ошибка 🙂
Это то, что я исправил не так давно здесь: # 521 Но, похоже, я не везде применял одну и ту же логику (например, в пакете Invoker, который используется всеми интеграциями фреймворка).
я открыл # 562 чтобы отследить эту ошибку, посмотрите на нее для получения дополнительной информации.
Тем временем в качестве обходного пути вы действительно можете переместить параметр в конец метода, как это предлагается в комментариях.
Других решений пока нет …