1. getCookies方法,返回cookie的集合
// 返回cookie集合
public function getCookies()
{
if ($this->_cookies === null) {
$this->_cookies = new CookieCollection(
$this->loadCookies(),
[
'readOnly' => true,
]
);
}
return $this->_cookies;
}
2. loadCookies方法,转化$_COOKIE为Cookie对象的数组
// 转化$_COOKIE为一个Cookie对象数组
protected function loadCookies()
{
$cookies = [];
if ($this->enableCookieValidation) {
// secret key
if ($this->cookieValidationKey == '') {
throw new InvalidConfigException(
get_class($this) . '::cookieValidationKey must be configured with a secret key.'
);
}
foreach ($_COOKIE as $name => $value) {
if (!is_string($value)) {
continue;
}
//验证cookie
$data = Yii::$app->getSecurity()->validateData($value, $this->cookieValidationKey);
if ($data === false) {
continue;
}
if (defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 70000) {
$data = @unserialize($data, ['allowed_classes' => false]);
} else {
$data = @unserialize($data);
}
if (is_array($data) && isset($data[0], $data[1]) && $data[0] === $name) {
$cookies[$name] = Yii::createObject([
'class' => 'yii\web\Cookie',
'name' => $name,
'value' => $data[1],
'expire' => null,
]);
}
}
} else {
foreach ($_COOKIE as $name => $value) {
$cookies[$name] = Yii::createObject([
'class' => 'yii\web\Cookie',
'name' => $name,
'value' => $value,
'expire' => null,
]);
}
}
return $cookies;
}
总结:
阅读了2个方法:
- getCookies方法,返回cookie的集合
- loadCookies方法,转化$_COOKIE为Cookie对象的数组