Php 当我进入另一个闭包时,为什么我的变量没有定义?
我在Laravel 4.2应用程序中有此功能,作为计划命令的一部分。在PHPStorm中,只要输入Mail::Send(){}闭包,我就无法再引用当前的$request变量,因此无法使用它来查找用于发送消息的附加用户或请求数据。这是为什么?我如何定义和访问变量Php 当我进入另一个闭包时,为什么我的变量没有定义?,php,laravel,Php,Laravel,我在Laravel 4.2应用程序中有此功能,作为计划命令的一部分。在PHPStorm中,只要输入Mail::Send(){}闭包,我就无法再引用当前的$request变量,因此无法使用它来查找用于发送消息的附加用户或请求数据。这是为什么?我如何定义和访问变量 public function fire() { $requests = DataRequest::all(); foreach($requests as $request) { if($requ
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');
});
}
}
}
这是PHP。变量的作用域仅限于本地,并且不由“子”函数继承。闭包仍然是一个函数,正常的PHP范围规则适用。如果希望
$request
变量可用,则必须使其可用:
Mail::send([..snip..], function($message) use ($request) { ... }
^^^^^^^^^^^^^^^