2017-12-18 390 views
1

我创建了受保护的$ companyID;在我的工作类,然后在__construct功能我传递了一个$id但是当我尝试实例变量在我handler functionnull如何实例化您在Laravel构造函数中传递的变量作业

protected $companyID = NULL; 

public function __construct($ID) { 
    $this->companyID = $ID; 
} 

然后实例化类的时候?

$ProcessOutgoingSMS = new ProcessOutgoingSMS(); 
    $ProcessOutgoingSMS->dispatch(3); 
+0

看看THI链接https://laracasts.com/discuss/channels/general-discussion/how-do-you-pass-constructor-parameters-when-youre-instantiating-an-interface-through-a-bind –

回答

0

您不会将任何参数传递给构造函数,也许这是问题的根源。

$ProcessOutgoingSMS = new ProcessOutgoingSMS(2); 

随着越来越多的普通代码风格评论,我也建议您不要使用大写前几个字符变量。 $id$processOutgoingSMS

+0

我得到AsTeR,但现在的问题是,因为我试图在控制台/ Kernel.php中注入值,因为我需要为不同的公司ID在不同的位置运行多个作业,现在需要注入这些ID以便在默认情况下我会拨打 php工匠队列:工作我所有的工作都可以运行。 – Fulela

0

你应该通过3到构造函数:

$ProcessOutgoingSMS = new ProcessOutgoingSMS(3); 
$ProcessOutgoingSMS->dispatch(); 

,而不是

$ProcessOutgoingSMS = new ProcessOutgoingSMS(); 
$ProcessOutgoingSMS->dispatch(3); 
+0

感谢Marcin,但是将注入从实际课程转移到调度方法中,作为测试手段没有看到它已经留在那里,尝试过这种解决方案但无法获得 – Fulela

0

我在哪里实例化类,并尝试进行注射控制台/ kernel.php

$idobject = (object)['id' => 3]; 
new ProcessOutgoingSMS($idobject); 

然后在正在尝试执行该功能的类中,var是一个静态变量var

static $companyID = 0; 

现在的构造看起来像

public function __construct($company) { 
    self::$companyID = $company->id; 
} 

然后在手柄()函数,我可以访问任何价值注入

dd(self::$companyID); 

谢谢你们

相关问题