PHP - Laravel dependency injection: Parameter für die constructor dependency
Ich Baue ein Laravel Projekt und in einem der Controller, ich bin Einspritzen von zwei Abhängigkeiten in einer Methode:
public function pusherAuth(Request $request, ChannelAuth $channelAuth) { ... }
Meine Frage ist simpel: Wie kann ich Parameter übergeben, um die $channelAuth
Abhängigkeit?
Im moment bin ich mit einigen setter übergeben die benötigten Abhängigkeiten:
public function pusherAuth(Request $request, ChannelAuth $channelAuth)
{
$channelAuth
->setChannel($request->input('channel'))
->setUser(Auth::user());
Was sind die alternativen zu dieser Vorgehensweise?
P. S. Der code muss testbar sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke für die Hilfe, die ich erhielt auf diese Laracast Diskussion ich war in der Lage, diese Frage zu beantworten. Mit einem service-provider ist es möglich, die zum initialisieren der Abhängigkeit durch die übergabe der richtigen Parameter an den Konstruktor. Dies ist der service-provider habe ich:
Bloom\Security\ChannelAuthInterface
die, in meinem Fall, ist nach den Eingaben validiert wurden.Wenn Sie wollen, um zu injizieren, die Abhängigkeit durch type-hint, die Sie verwenden sollten, Fabrik-Muster
Können Sie erstellen und registrieren Sie Ihre eigenen service-provider und erstellen Objekt mit Konstruktor Anfragen Parametern.
Ich weiß nicht, wie dies in Laravel, aber in Symfony2 können Sie Spritzen in Ihrem eigenen Dienst etwas wie RequestStack. Es ist der beste Weg, weil Sie die kleinen Dienstleister, die sind voll überprüfbar.