2017-12-18 17 views
1

보호 된 $ companyID를 만들었습니다. 내 작업 클래스에 다음 __construct 기능에 나는 $id을 통과하지만 난에서 변수를 초기화 할 때 내 handler function 그 다음Laravel 작업의 생성자에서 전달한 변수를 인스턴스화하는 방법

protected $companyID = NULL; 

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

null 클래스를 인스턴스화?

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

을 주입 어떤 I가 액세스 할 수있는 핸들() 함수에

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

처럼 보인다 link 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(); 

아니라 내가 클래스를 인스턴스화하고 주입 콘솔/kernel.php

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

을 수행하려고

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

고마워 Marcin,하지만 테스트의 수단으로 실제 클래스에서 파견 방법으로 주사를 옮겼다는 것을 보지 못했다면 그 해결책을 시도했지만 이길 수 없었습니다. – Fulela

0

그런 다음 기능을 수행하려고하는 클래스에서 정적 var로 된 var

static $companyID = 0; 

이제 생성자는 다음 값이 생에서보세요

dd(self::$companyID); 

들 덕분에