在看Laravel Facades 相关代码:
public static function __callStatic($method, $args)
{
$instance = static::getFacadeRoot();
if (! $instance) {
throw new RuntimeException('A facade root has not been set.');
}
return $instance->$method(...$args);
}
最后一个 ...$args
参数写法代表不定参数个数?有什么需要注意的地方吗?
我记得之前这里的方法是用 switch
实现的:
public static function __callStatic($method, $args)
{
$instance = static::getFacadeRoot();
switch (count($args)) {
case 0:
return $instance->$method();
case 1:
return $instance->$method($args[0]);
case 2:
return $instance->$method($args[0], $args[1]);
case 3:
return $instance->$method($args[0], $args[1], $args[2]);
case 4:
return $instance->$method($args[0], $args[1], $args[2], $args[3]);
default:
return call_user_func_array([$instance, $method], $args);
}
}
这里应该之前是对早期版本的php兼容而采用的写法,php中
...$args
这种语法只有在 php5.6+之后才有,之前的版本并不支持。