有没有办法在rememberForever回调中传递变量?

时间:2016-10-04 21:42:17

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我有以下代码,

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

问题是:我收到错误

  

未定义的变量:CurrenctUserRoleID

问题:有没有办法在回调中传递变量?

2 个答案:

答案 0 :(得分:3)

您可以尝试此操作(请注意使用use关键字):

$CurrenctUserRoleID = 1; // Some id

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

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

答案 1 :(得分:1)

PHP.net - anonymous functions - 示例#3

您没有通过回调传递任何内容,因为您不是该回调的调用方。您告诉PHP使用父作用域中的变量。

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