首页 > 解决方案 > 将数组传递给接受各种参数的函数

问题描述

我有两个功能:

public function handle($request, Closure $next, ...$roles)

public function hasAnyRole(...$roles){

我调用第一个函数来检查用户是否具有所需的权限:

$this->middleware('roles:request,delete');

$roles 变量已正确创建,并具有一个包含值 request 和 delete 的数组。在我的下一步中,我将调用函数 hasAnyRole,我可以在其中再次传递各种参数,但是当我使用已经创建的数组调用它时,它会被解释为值:

$request->user()->hasAnyRole($roles) || !$roles)

我也使用 implode 命令进行了尝试,但我仍然收到一个只有一个值的数组:

array:1 [▼
  0 => "request,delete"
]

任何人都知道我如何将数组转换为这样调用的数组:

hasAnyRole("delete", "request")

谢谢斯蒂芬

标签: laravel

解决方案


您正在传递以hasAnyRole()数组作为参数的数组,这意味着您可以传递数组值列表。假设你的功能是这样的

 hasAnyRole($roles){
    ....
 }

但是你想要做的是handAnyRole($role1, $role2, ...)不可能的。你需要做这样的事情

hasAnyRole($roles){
    foreach($roles as $role){
       if(doCheck($role)){
         ...
       } 
    }
}

推荐阅读