改进Cookie类的get方法支持获取全部 改进Request类的cookie方法

This commit is contained in:
thinkphp
2017-03-23 11:58:52 +08:00
parent 08e0261ad3
commit 1e909984ea
2 changed files with 22 additions and 7 deletions

View File

@@ -135,22 +135,35 @@ class Cookie
* @param string|null $prefix cookie前缀
* @return mixed
*/
public static function get($name, $prefix = null)
public static function get($name = '', $prefix = null)
{
!isset(self::$init) && self::init();
$prefix = !is_null($prefix) ? $prefix : self::$config['prefix'];
$name = $prefix . $name;
if (isset($_COOKIE[$name])) {
$value = $_COOKIE[$name];
$key = $prefix . $name;
if ('' == $name) {
// 获取全部
if ($prefix) {
$value = [];
foreach ($_COOKIE as $k => $val) {
if (0 === strpos($k, $prefix)) {
$value[$k] = $val;
}
}
} else {
$value = $_COOKIE;
}
} elseif (isset($_COOKIE[$key])) {
$value = $_COOKIE[$key];
if (0 === strpos($value, 'think:')) {
$value = substr($value, 6);
$value = json_decode($value, true);
array_walk_recursive($value, 'self::jsonFormatProtect', 'decode');
}
return $value;
} else {
return;
$value = null;
}
return $value;
}
/**

View File

@@ -802,10 +802,12 @@ class Request
public function cookie($name = '', $default = null, $filter = '')
{
if (empty($this->cookie)) {
$this->cookie = $_COOKIE;
$this->cookie = Cookie::get();
}
if (is_array($name)) {
return $this->cookie = array_merge($this->cookie, $name);
} elseif (!empty($name)) {
$name = Cookie::prefix() . $name;
}
return $this->input($this->cookie, $name, $default, $filter);
}