参考文献 http://php.net/manual/zh/migration56.new-features.php
场景:
变长参数... 的大名,很早就听说了,但是没有怎么用过.。 今天在看一个laravel 权限包的时候 遇到了
就扒一扒
用法:
1. 正常的调用 这些参数会被当成一个数组来处理
2. ...调用 则数组分散成单个参数
function dump(...$args) { var_dump($args); } // dump(2,3,4); [2,3,4] // dump(...[2,3,4]); [2,3,4] // dump([2,3,4]); [[2,3,4]]
解析:
下面的例子, 很明显传入的参数的类型和个数都是不固定的 [1,2,3,4] 或者 (1,2,3,5, PermisionObject)
这是一个边长参数的经典运用
/** * Determine if the model has any of the given permissions. * * @param array ...$permissions * * @return bool */ public function hasAnyPermission(...$permissions): bool /* */ { if (is_array($permissions[0])) { $permissions = $permissions[0]; } foreach ($permissions as $permission) { if ($this->hasPermissionTo($permission)) { return true; } } return false; }