Я использую привязки в моем поставщике услуг между интерфейсом и реализацией:доступа в Service Provider после применения MiddleWare
public function register()
{
$this->app->bind('MyInterface', MyImplementation::class);
}
Middleware
В моем промежуточном слое, добавить атрибут к запросу:
public function handle($request, Closure $next)
{
$request->attributes->add(['foo' => 'bar]);
return $next($request);
}
Теперь, я хочу получитьв моей поставщика услуг
public function register()
{
$this->app->bind('MyInterface', new MyImplementation($this->request->attributes->get('foo')); // Request is not available
}
регистр() вызывается перед нанесением промежуточного уровня. Я знаю.
Я ищу технику, чтобы 'перепривязывают', если request-> attributes-> получить ('Foo') установлен
Но разве это не плохая практика вообще? Запуск SPs является частью процесса начальной загрузки, обработка запроса происходит позже. Это звучит несколько неудобно - изменение процесса загрузки на основе запроса. Разве вы не должны решить свою проблему по-другому? –
Да, ты совершенно прав. Но теперь я должен создавать конкретные реализации, которые не являются хорошо поддерживаемыми. – schellingerht
Почему? Вы могли бы связать другую реализацию с интерфейсом в своем промежуточном ПО на основе параметров $ request –