2016-07-05 15 views
1

Gibt es in Laravel das Konzept eines Werksdienstes? Ich möchte einen Dienstanbieter erstellen, mit dem ich einige zusätzliche Konfigurationsparameter übergeben kann.Hat Laravel keinen Service-Container-Resolver im Factory-Stil?

Ich bin es gewohnt, Silex, wo ich die Pimple factory Methode verwenden kann: https://github.com/silexphp/Pimple#defining-factory-services

Viele anderen Frameworks wie Angular2 über diese Funktion auch, aber ich bin nicht alles in dem Laravel docs zu sehen - nicht Diese Funktion existiert nicht in ihrem IoC-Container?

Antwort

1

Ich weiß nicht, Silex, aber in Laravel können Sie einen Dienst aus dem IOK Behälter mit zusätzlichen Parametern auf diese Weise erstellen:

App::bind(YourService::class, function($app) 
{ 
    //create YourService passing Dependency from ioc container 
    return new yourService($app->make(Dependency::class)); 
}); 

Außerdem, wenn Sie diese Parameter übergeben müssen dinamically vom rufenden Code

//bind the service accepting extra parameters 
App::bind(YourService::class, function($app, array $parameters) 
{ 
    //create YourService passing a parameter got from the calling code 
    return new YourService($parameters[0]); 
}); 

Und dann die Parameter an den ioc Behälter passieren: Sie können das IOK Container sie erhalten lassen

//create the instance passing $myParameter 
$instance = App::make(YourService::class, [ $myParameter ] ); 
+0

Gotcha, danke - es in den Dokumenten nicht angibt, dass Sie eine zusätzliche Parameter an die Bindung schließen können, hilft das viel – bruchowski

+0

das ist wahr. Die Dokumente sind nicht so exogen, wie man meinen könnte – Moppo