我遇到过一个问题,我有一个自定义类app/TicketFetcher
,被注入到App\Console\Commands/TicketFetch
类的构造函数中,但我不确定如何注入{的特定实例{1}},它带有构造函数参数,没有错误。
这些类的实例化似乎由Laravel的服务容器处理,因为当TicketFetcher
的构造函数没有参数时,它会自动注入我的自定义类的实例。有争议时会出现问题。
设定:
TicketFetcher
如您所见,我需要构建class TicketFetch extends Command
{
// $ticketFetcher injected automatically
public function __construct(TicketFetcher $ticketFetcher)
}
class TicketFetcher
{
public function __construct(integer $var1, string $var2...) {
}
的一些初始化变量,因此我将TicketFetcher
绑定在TicketFetcher
中。
AppServiceProvider
我将Unresolvable dependency resolving [Parameter #0 [ <required> string $var1 ]] in class App\TicketFetcher
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Also tried $this->app->instance() and
// $this->app->when('\App\TicketFetcher')->needs(...)->give(...)
$this->app->bind(
'\App\TicketFetcher',
new \App\TicketFetcher('some value')
);
}
}
传递给some value
的构造函数但仍然出错。
TicketFetcher
如何正确绑定,以便正确创建Unresolvable dependency resolving [Parameter #0 [ <required> string $var1 ]] in class App\TicketFetcher
?
答案 0 :(得分:0)
事实证明我尝试过的方法之一是正确/有效的。
$this->app->when('App\TicketFetcher')->needs('$var1')->give('some value');
$this->app->when('App\TicketFetcher')->needs('$var2')->give([1, 2]);
注意缺少前导斜线。这就是所谓的binding a primitive,就像一个字符串,数组等。你为每个参数重复它。
我仍然想知道是否还有另一种方法可以做到这一点,因为对于一个更大的项目来说这似乎会变得非常冗长。