From f58aeede7ac3a76a6bbc06d38c8c524c5aed6173 Mon Sep 17 00:00:00 2001 From: WeakSun Date: Sat, 25 Jun 2016 13:30:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3scope=E6=96=B9=E6=B3=95$name?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BC=A0=E5=85=A5array=E5=BC=95=E8=B5=B7$nam?= =?UTF-8?q?es=E5=8F=98=E9=87=8F=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修正$name为array类型时的BUG 2.范围方法调用支持多参数传入 --- library/think/Model.php | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/library/think/Model.php b/library/think/Model.php index 450675dc..de4b4db6 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -978,25 +978,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); } } }