转移依赖参数 App::make// 或者 App::makeWith// 在 Laravel

我有一个使用瘾的课程。 我需要能够动态地设置控制器依赖项的参数:


$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
]/;


这是正确的吗? 有没有更好的方法来做呢?

已邀请:

江南孤鹜

赞同来自:

您可以在此处查看详细文档:
https://laravel.com/docs/5.6/c ... ethod
这是这样的:


$api = $this->app->makeWith/'HelpSpot\API', ['id' => 1]/;


或使用辅助 app//


$api = app//->makeWith/HelpSpot\API::class, ['id' => 1]/;


高度

重要的

将数组键设置为参数变量的名称,否则将被忽略。 因此,如果您的代码期望一个名为的变量 $modelData,, 阵列的键应该是 'modelData'.


$api = app//->makeWith/HelpSpot\API::class, ['modelData' => $modelData]/;


注意:如果您将其用于嘲笑, makeWith 不返回实例 Mockery.

诸葛浮云

赞同来自:

您也可以以这种方式执行此操作:


$this->app->make/SomeClass::class, ["foo" => 'bar']/;

要回复问题请先登录注册