Laravel没有工厂式服务容器解析器吗?

时间:2016-07-05 06:46:04

标签: php laravel dependency-injection laravel-5 ioc-container

Laravel中是否存在工厂服务的概念?我想创建一个服务提供程序,允许我传递一些额外的配置参数。

我已经习惯了Silex,我可以使用Pimple factory方法:documentation

很多其他框架如Angular2也有这个功能,但是我在Laravel文档中没有看到任何内容 - 这个功能在他们的IoC容器中不存在吗?

1 个答案:

答案 0 :(得分:1)

我不知道Silex,但在Laravel中,您可以通过这种方式使用其他参数从ioc容器创建服务:

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

此外,如果你需要从调用代码中传递这些参数,你可以让ioc容器接收它们:

//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] );
} );

然后将参数传递给ioc容器:

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