Bindungen
Ich Bindungen in meinen Service-Provider zwischen Schnittstelle und Implementierung mit:Access Request in Service-Provider nach dem Anwenden von Middleware
public function register()
{
$this->app->bind('MyInterface', MyImplementation::class);
}
Middleware
In meiner Middleware, füge ich ein Attribut zur Anfrage:
public function handle($request, Closure $next)
{
$request->attributes->add(['foo' => 'bar]);
return $next($request);
}
Jetzt möchte ich auf 012 zugreifenin meinem Dienstleister
public function register()
{
$this->app->bind('MyInterface', new MyImplementation($this->request->attributes->get('foo')); // Request is not available
}
Das Register() wird vor dem Aufbringen der Middleware genannt. Ich kenne.
Ich bin auf der Suche nach einer Technik zu 'binden', wenn die Anfrage-> Attributen-> get ('foo') gesetzt ist
Aber ist das nicht generell eine schlechte Übung? Das Starten von SPs ist ein Teil des Bootstrap-Prozesses, die Verarbeitung einer Anfrage erfolgt später. Es klingt etwas peinlich - Ändern des Boot-Prozesses auf Anfrage. Sollten Sie Ihr Problem nicht anders lösen? –
Ja, du hast vollkommen recht. Aber jetzt muss ich konkrete Implementierungen instanziieren, die nicht gut wartbar sind. – schellingerht
Warum? Sie könnten eine andere Implementierung an die Schnittstelle in Ihrer Middleware binden, basierend auf den Parametern $ request –