[php] Laravel 4에서 클로저에 데이터 전달

Laravel 4에서 Mail 클래스를 사용하려고하는데 $ m 개체에 변수를 전달할 수 없습니다.

$ team 개체에는 DB에서 웅변 적으로 얻은 데이터가 포함되어 있습니다.

Mail::send('emails.report', $data, function($m)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('info@website.com', 'Sender');
});

어떤 이유로 $ team 개체를 사용할 수없는 오류가 발생합니다. 스코프와 관련이 있다고 생각합니다.

어떤 아이디어?



답변

$team함수 외부 에서 변수 를 인스턴스화 한 경우 함수 범위에 포함되지 않습니다. use 키워드를 사용하십시오 .

$team = Team::find($id);
Mail::send('emails.report', $data, function($m) use ($team)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('info@website.com', 'Sender');
});

참고 : 사용중인 함수는 PHP 클로저 (익명 함수) 입니다. Laravel 전용이 아닙니다.


답변