是否有任何的方式来传递变量rememberForever回调?

问题描述:

我有下面的代码,是否有任何的方式来传递变量rememberForever回调?

\Cache::rememberForever('Roles', function() { 
    return RoleModel 
     ::where('ParentRoleID' >= $CurrenctUserRoleID) 
     ->get(); 
}); 

问题是:我收到错误

未定义的变量:CurrenctUserRoleID

问题:有没有办法通过可变回调?

你可以试试这个(注意使用use关键字):

$CurrenctUserRoleID = 1; // Some id 

\Cache::rememberForever('Roles', function() use($CurrenctUserRoleID) { 
    return RoleModel 
    ::where('ParentRoleID' >= $CurrenctUserRoleID) 
    ->get(); 
}); 

检查PHP手册:Inheriting variables from the parent scope

PHP.net - anonymous functions - 示例#3

你是不是有回调递东西,你是不是回调的调用者。你告诉PHP使用变量从父范围。

function (...) use (...) { ... }