我对Lumen并不陌生,我正在关注本教程,以通过Lumen学习JWT的基本身份验证: https://medium.com/tech-tajawal/jwt-authentication-for-lumen-5-6-2376fd38d454
现在是这部分代码,这使我有些头疼:
$router->group(
['middleware' => 'jwt.auth'],
function() use ($router){
$router->get('users', function(){
$users=\App\User::all();
return response()->json($users);
});
}
);
我不明白function() use ($router)
是做什么的?
我阅读了使用中的PHP官方文件:https://www.php.net/manual/de/language.namespaces.importing.php
我还研究了外部资源:
https://www.tutorialspoint.com/php7/php7_use_statement.htm
但是我想我仍然需要一些有关Lumen / Laravel内部运作的知识,以了解这里发生的情况。 有人可以帮我搭便车,并在几行中向我解释一下吗?
答案 0 :(得分:4)
这是一项PHP功能,用于将外部变量带入匿名函数/闭包的范围。
$a = 'hello';
$callback = function ($something, $else) use ($a) {
echo $a;
};
没有use
声明,$a
变量将不在该函数的范围内。
由于其他事情正在执行您的回调,因此您无法控制传递给它的参数,但可以控制要带入回调范围的变量。
“闭包也可能从父作用域继承变量。任何此类变量都必须传递给
use
语言构造。”
PHP Manual - Anonymous Functions 示例#3
其他信息:
如果您查看Laravel的Collection类的map
函数的示例,则会看到以下内容:
$multiplied = $collection->map(function ($item, $key) {
return $item * 2;
});
在这种情况下,它们向您显示回调将具有一个Collection的项目和作为参数传递给它的键。