2015-08-17 31 views
1

我在Laravel 4.2應用程序中將此函數作爲預定命令的一部分。在PHPStorm中,只要我輸入Mail :: Send(){}閉包,我就不能再引用當前的$ request變量,因此不能使用它來查找附加的用戶或發送消息的請求數據。爲什麼是這樣的,我怎樣才能使變量定義和訪問?爲什麼當我進入另一個閉包時我的變量沒有定義?

public function fire() 
{ 
    $requests = DataRequest::all(); 

    foreach($requests as $request) 
    { 
     if($request->status != "Completed") 
     { 
      Mail::send('emails.incompleteRequest', array('request' => $request), function($message) 
      { 
       //By this point, $request is not defined 
       $requestid = $request->id; 
       $user = RequestUser::where('userid', '=', $request->userid)->first(); 
       $message->to($user->email,$user->first_name . " " . $user->last_name)->subject('New Request Created'); 

      }); 
     } 
    } 
} 

回答

2

這是PHP。變量只在本地範圍內,並且不被「子」功能繼承。您的關閉仍然是一項功能,並且正常的PHP範圍規則適用。如果你想$request變量可用,你必須使它可用:

Mail::send([..snip..], function($message) use ($request) { ... } 
              ^^^^^^^^^^^^^^^ 
+0

@lafor:woops,謝謝...固定。 –

相關問題