diff --git a/library/think/Model.php b/library/think/Model.php index ea1738a2..cbcb1994 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -981,25 +981,27 @@ abstract class Model implements \JsonSerializable, \ArrayAccess * 命名范围 * @access public * @param string|array|Closure $name 命名范围名称 逗号分隔 - * @param mixed $params 参数调用 + * @param mixed ...$params 参数调用 * @return Model */ - public static function scope($name, $params = []) + public static function scope($name) { - $model = new static(); - $query = $model->db(); - if ($name instanceof \Closure) { - call_user_func_array($name, [ & $query, $params]); - } elseif ($name instanceof Query) { + if ($name instanceof Query) { return $name; - } else { - if (is_string($name)) { - $names = explode(',', $name); - } - foreach ($names as $scope) { + } + $model = new static(); + $params = func_get_args(); + $params[0] = $model->db(); + if ($name instanceof \Closure) { + call_user_func_array($name, $params); + } elseif (is_string($name)) { + $name = explode(',', $name); + } + if (is_array($name)) { + foreach ($name as $scope) { $method = 'scope' . trim($scope); if (method_exists($model, $method)) { - $model->$method($query, $params); + call_user_func_array([$model, $method], $params); } } }