2017-12-18 160 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); 

謝謝你們

相關問題