From 0a04fe1b4c6a24f1c94f25483d7bcae3cabd38d5 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Thu, 23 Mar 2017 14:37:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3Request=E7=B1=BBcookie?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Request.php | 45 ++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/library/think/Request.php b/library/think/Request.php index 97599144..1eb7f297 100644 --- a/library/think/Request.php +++ b/library/think/Request.php @@ -807,9 +807,21 @@ class Request if (is_array($name)) { return $this->cookie = array_merge($this->cookie, $name); } elseif (!empty($name)) { - $name = Cookie::prefix() . $name; + $data = Cookie::has($name) ? Cookie::get($name) : $default; + } else { + $data = $this->cookie; } - return $this->input($this->cookie, $name, $default, $filter); + + // 解析过滤器 + $filter = $this->getFilter($filter, $default); + + if (is_array($data)) { + array_walk_recursive($data, [$this, 'filterValue'], $filter); + reset($data); + } else { + $this->filterValue($data, $name, $filter); + } + return $data; } /** @@ -986,18 +998,8 @@ class Request } // 解析过滤器 - if (is_null($filter)) { - $filter = []; - } else { - $filter = $filter ?: $this->filter; - if (is_string($filter)) { - $filter = explode(',', $filter); - } else { - $filter = (array) $filter; - } - } + $filter = $this->getFilter($filter, $default); - $filter[] = $default; if (is_array($data)) { array_walk_recursive($data, [$this, 'filterValue'], $filter); reset($data); @@ -1026,6 +1028,23 @@ class Request } } + protected function getFilter($filter, $default) + { + if (is_null($filter)) { + $filter = []; + } else { + $filter = $filter ?: $this->filter; + if (is_string($filter)) { + $filter = explode(',', $filter); + } else { + $filter = (array) $filter; + } + } + + $filter[] = $default; + return $filter; + } + /** * 递归过滤给定的值 * @param mixed $value 键值