【发布时间】:2016-10-19 01:59:36
【问题描述】:
我有一个使用依赖项的类。我需要能够从控制器动态设置依赖项的参数:
$objDependency = new MyDependency();
$objDependency->setSomething($something);
$objDependency->setSomethingElse($somethingElse);
$objMyClass = new MyClass($objDependency);
如何通过 Laravel 中的服务容器来实现这一点?这是我尝试过的,但这对我来说似乎是错误的。在我的 AppServiceProvider 中:
$this->app->bind('MyClass', function($app,$parameters){
$objDependency = new MyDependency();
$objDependency->setSomething($parameters['something']);
$objDependency->setSomethingElse($parameters['somethingElse']);
return new MyClass($objDependency);
}
然后在控制器中我会这样使用:
$objMyClass = App:make('MyClass', [
'something' => $something,
'somethingElse' => $somethingElse
]);
这是正确的吗?有没有更好的方法可以做到这一点?
谢谢
【问题讨论】:
-
是的,这是正确的方法,这是 Laravel 的一种工厂设计模式实现。这段代码有什么困扰你的地方?
-
谢谢 - 我不确定,我还在了解 Laravel,只是不确定设置依赖项的参数是否正确。再次感谢
-
你可以直接在构造函数中注入你的依赖。
标签: php laravel laravel-5 ioc-container