2017-12-18 11 views
1

保護された$ companyIDを作成しました。私の仕事のクラスで、その後__construct機能で私が$idを通過したが、私はクラスをインスタンス化する際にその後、私のhandler functionそのnullLaravelのジョブでコンストラクタで渡した変数をインスタンス化する方法

protected $companyID = NULL; 

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

で変数をインスタンス化しようとすると?

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

を注入したものは何でも、私がアクセスできるハンドル()関数で

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

のように見えますリンク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に値を注入しようとしているからです。別のcompanyIDのために複数のジョブを実行する必要があるため、これらのIDを注入する必要があります。職人の待ち行列:私の仕事はすべて動くことができます。 – Fulela

0

あなたはコンストラクタに3を渡す必要があります。

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

はなく、私はクラスをインスタンス化し、射出コンソール/ kernel.php

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

を実行しようと

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

ありがとうMarcin、しかし、テストの手段として実際のクラスからディスパッチメソッドに注射を移動したことを見ていなかったが、その解決策を試みたが、勝てなかった – Fulela

0

その機能を実行しようとしているクラスでは、varは静的なvar

static $companyID = 0; 

は現在コンストラクタは、値がTHIを見てみましょう

dd(self::$companyID); 

おかげでみんな

関連する問題