我开始在Laravel 5.1中使用Gate,我从互联网上的某些地方获得了此代码。
<?php
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
/**
* NOTE!!
* First time migration will fails, because permissions table doesn't exists.
*/
foreach($this->getPermissions() as $permission) {
$gate->define($permission->path, function($user) use ($permission) {
return $user->hasRole($permission->roles);
});
}
}
我的问题是,function($user) use ($permission) {
中的$gate->define($permission->path, function($user) use ($permission) {
是什么?为什么在use
之后有function()
?
如果有一些参考资料,我很乐意知道/阅读它。
答案 0 :(得分:0)
已在PHP文档中进行了描述。 请参阅http://php.net/manual/en/functions.anonymous.php的示例3。
闭包还可以从父作用域继承变量。必须将任何此类变量传递给使用语言构造。
你的案子是
$user->hasRole($permission->roles)
是必要的,以便使用$ permission变量。