Laravel中是否存在工厂服务的概念?我想创建一个服务提供程序,允许我传递一些额外的配置参数。
我已经习惯了Silex,我可以使用Pimple factory
方法:documentation
很多其他框架如Angular2也有这个功能,但是我在Laravel文档中没有看到任何内容 - 这个功能在他们的IoC容器中不存在吗?
答案 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 ] );