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

Is there any way to pass variable in rememberForever callback?

我有以下代码,

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

问题是:我遇到错误

Undefined variable: 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 (...) { ... }