Laravel:在Command类中注入自定义类

时间:2018-02-08 01:13:11

标签: laravel dependency-injection ioc-container laravel-5.5

我遇到过一个问题,我有一个自定义类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

1 个答案:

答案 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,就像一个字符串,数组等。你为每个参数重复它。

我仍然想知道是否还有另一种方法可以做到这一点,因为对于一个更大的项目来说这似乎会变得非常冗长。