类 yii\web\CookieCollection
CookieCollection维护当前请求中可用的Cookie。
有关CookieCollection的更多详细信息和用法信息,请参阅处理Cookie的指南文章。
公共属性
属性 | 类型 | 描述 | 定义于 |
---|---|---|---|
$count | integer | 集合中Cookie的数量。 | yii\web\CookieCollection |
$iterator | \ArrayIterator |
用于遍历集合中Cookie的迭代器。 | yii\web\CookieCollection |
$readOnly | boolean | 此集合是否为只读。 | yii\web\CookieCollection |
公共方法
属性详情
方法详情
public mixed __call ( $name, $params ) | ||
$name | string |
方法名 |
$params | array |
方法参数 |
返回值 | mixed |
方法返回值 |
---|---|---|
抛出异常 | yii\base\UnknownMethodException |
调用未知方法时 |
public function __call($name, $params)
{
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
构造函数。
public void __construct ( $cookies = [], $config = [] ) | ||
$cookies | array |
此集合最初包含的Cookie。这应该是一个名称-值对数组。 |
$config | array |
将用于初始化对象属性的名称-值对 |
public function __construct($cookies = [], $config = [])
{
$this->_cookies = $cookies;
parent::__construct($config);
}
定义于: yii\base\BaseObject::__get()
返回对象属性的值。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $value = $object->property;
时会被隐式调用。
另见 __set()。
public mixed __get ( $name ) | ||
$name | string |
属性名称 |
返回值 | mixed |
属性值 |
---|---|---|
抛出异常 | yii\base\UnknownPropertyException |
如果属性未定义 |
抛出异常 | yii\base\InvalidCallException |
如果属性为只写 |
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter();
} elseif (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
定义于: yii\base\BaseObject::__isset()
检查属性是否已设置,即已定义且不为null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($object->property)
时会被隐式调用。
请注意,如果属性未定义,则将返回 false。
public boolean __isset ( $name ) | ||
$name | string |
属性名称或事件名称 |
返回值 | boolean |
指定的属性是否已设置(非 null)。 |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
return false;
}
定义于: yii\base\BaseObject::__set()
设置对象属性的值。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $object->property = $value;
时会被隐式调用。
另见 __get()。
public void __set ( $name, $value ) | ||
$name | string |
属性名称或事件名称 |
$value | mixed |
属性值 |
抛出异常 | yii\base\UnknownPropertyException |
如果属性未定义 |
---|---|---|
抛出异常 | yii\base\InvalidCallException |
如果属性为只读 |
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter($value);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
}
定义于: yii\base\BaseObject::__unset()
将对象属性设置为null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property)
时会被隐式调用。
请注意,如果属性未定义,则此方法将不做任何操作。如果属性为只读,则会抛出异常。
public void __unset ( $name ) | ||
$name | string |
属性名称 |
抛出异常 | yii\base\InvalidCallException |
如果属性为只读。 |
---|
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter(null);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
}
}
向集合中添加一个Cookie。
如果集合中已经存在具有相同名称的 Cookie,则会先将其移除。
public void add ( $cookie ) | ||
$cookie | yii\web\Cookie |
要添加的 Cookie |
抛出异常 | yii\base\InvalidCallException |
如果 Cookie 集合为只读 |
---|
public function add($cookie)
{
if ($this->readOnly) {
throw new InvalidCallException('The cookie collection is read only.');
}
$this->_cookies[$cookie->name] = $cookie;
}
定义于: yii\base\BaseObject::canGetProperty()
返回一个值,指示是否可以读取属性。
如果属性可读,则
- 类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另见 canSetProperty()。
public boolean canGetProperty ( $name, $checkVars = true ) | ||
$name | string |
属性名称 |
$checkVars | boolean |
是否将成员变量视为属性 |
返回值 | boolean |
属性是否可读 |
---|
public function canGetProperty($name, $checkVars = true)
{
return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}
定义于: yii\base\BaseObject::canSetProperty()
返回一个值,指示是否可以设置属性。
如果属性可写,则
- 类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另见 canGetProperty()。
public boolean canSetProperty ( $name, $checkVars = true ) | ||
$name | string |
属性名称 |
$checkVars | boolean |
是否将成员变量视为属性 |
返回值 | boolean |
属性是否可写 |
---|
public function canSetProperty($name, $checkVars = true)
{
return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}
::class
。
定义于: yii\base\BaseObject::className()
返回此类的完全限定名称。
public static string className ( ) | ||
返回值 | string |
此类的完全限定名称。 |
---|
public static function className()
{
return get_called_class();
}
返回集合中Cookie的数量。
此方法由 SPL 的 Countable
接口要求。当您使用 count($collection)
时,它将被隐式调用。
public integer count ( ) | ||
返回值 | integer |
集合中Cookie的数量。 |
---|
#[\ReturnTypeWillChange]
public function count()
{
return $this->getCount();
}
从数组填充Cookie集合。
public void fromArray ( array $array ) | ||
$array | array |
要从中填充的 Cookie |
public function fromArray(array $array)
{
$this->_cookies = $array;
}
返回指定名称的Cookie。
另见 getValue()。
public yii\web\Cookie|null get ( $name ) | ||
$name | string |
Cookie 名称 |
返回值 | yii\web\Cookie|null |
具有指定名称的 Cookie。如果指定的 Cookie 不存在,则为 Null。 |
---|
public function get($name)
{
return isset($this->_cookies[$name]) ? $this->_cookies[$name] : null;
}
返回集合中Cookie的数量。
public integer getCount ( ) | ||
返回值 | integer |
集合中Cookie的数量。 |
---|
public function getCount()
{
return count($this->_cookies);
}
返回用于遍历集合中Cookie的迭代器。
此方法由 SPL 接口 IteratorAggregate 要求。当您使用 foreach
遍历集合时,它将被隐式调用。
public \ArrayIterator | ||
返回值 | \ArrayIterator |
用于遍历集合中Cookie的迭代器。 |
---|
#[\ReturnTypeWillChange]
public function getIterator()
{
return new ArrayIterator($this->_cookies);
}
返回指定名称的Cookie的值。
另请参阅 get()。
public mixed getValue ( $name, $defaultValue = null ) | ||
$name | string |
Cookie 名称 |
$defaultValue | mixed |
当指定的 Cookie 不存在时,应返回的值。 |
返回值 | mixed |
指定名称的 Cookie 的值。 |
---|
public function getValue($name, $defaultValue = null)
{
return isset($this->_cookies[$name]) ? $this->_cookies[$name]->value : $defaultValue;
}
public boolean has ( $name ) | ||
$name | string |
Cookie 名称 |
返回值 | boolean |
指定的 Cookie 是否存在 |
---|
public function has($name)
{
return isset($this->_cookies[$name]) && $this->_cookies[$name]->value !== ''
&& ($this->_cookies[$name]->expire === null
|| $this->_cookies[$name]->expire === 0
|| (
(is_string($this->_cookies[$name]->expire) && strtotime($this->_cookies[$name]->expire) >= time())
|| (
interface_exists('\\DateTimeInterface')
&& $this->_cookies[$name]->expire instanceof \DateTimeInterface
&& $this->_cookies[$name]->expire->getTimestamp() >= time()
)
|| $this->_cookies[$name]->expire >= time()
)
);
}
定义于: yii\base\BaseObject::hasMethod()
返回一个值,指示方法是否已定义。
默认实现是调用 php 函数 method_exists()
。当您实现了 php 魔术方法 __call()
时,您可以重写此方法。
public boolean hasMethod ( $name ) | ||
$name | string |
方法名 |
返回值 | boolean |
方法是否已定义 |
---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
定义于: yii\base\BaseObject::hasProperty()
返回一个值,指示属性是否已定义。
如果属性已定义,则
- 类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅
public boolean hasProperty ( $name, $checkVars = true ) | ||
$name | string |
属性名称 |
$checkVars | boolean |
是否将成员变量视为属性 |
返回值 | boolean |
属性是否已定义 |
---|
public function hasProperty($name, $checkVars = true)
{
return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}
public void init ( ) |
public function init()
{
}
返回是否存在指定名称的Cookie。
此方法由 SPL 接口 ArrayAccess 要求。当您使用类似 isset($collection[$name])
的内容时,它会被隐式调用。
public boolean offsetExists ( $name ) | ||
$name | string |
Cookie 名称 |
返回值 | boolean |
指定的 Cookie 是否存在 |
---|
#[\ReturnTypeWillChange]
public function offsetExists($name)
{
return $this->has($name);
}
返回指定名称的Cookie。
此方法由 SPL 接口 ArrayAccess 要求。当您使用类似 $cookie = $collection[$name];
的内容时,它会被隐式调用。这等效于 get()。
public yii\web\Cookie|null offsetGet ( $name ) | ||
$name | string |
Cookie 名称 |
返回值 | yii\web\Cookie|null |
具有指定名称的 Cookie,如果指定的 Cookie 不存在,则为 null。 |
---|
#[\ReturnTypeWillChange]
public function offsetGet($name)
{
return $this->get($name);
}
将Cookie添加到集合中。
此方法由 SPL 接口 ArrayAccess 要求。当您使用类似 $collection[$name] = $cookie;
的内容时,它会被隐式调用。这等效于 add()。
public void offsetSet ( $name, $cookie ) | ||
$name | string |
Cookie 名称 |
$cookie | yii\web\Cookie |
要添加的 Cookie |
#[\ReturnTypeWillChange]
public function offsetSet($name, $cookie)
{
$this->add($cookie);
}
删除指定名称的Cookie。
此方法由 SPL 接口 ArrayAccess 要求。当您使用类似 unset($collection[$name])
的内容时,它会被隐式调用。这等效于 remove()。
public void offsetUnset ( $name ) | ||
$name | string |
Cookie 名称 |
#[\ReturnTypeWillChange]
public function offsetUnset($name)
{
$this->remove($name);
}
删除一个Cookie。
如果 $removeFromBrowser
为 true,则 Cookie 将从浏览器中删除。在这种情况下,一个具有过时过期时间的 Cookie 将被添加到集合中。
public void remove ( $cookie, $removeFromBrowser = true ) | ||
$cookie | yii\web\Cookie|string |
要删除的 Cookie 对象或 Cookie 的名称。 |
$removeFromBrowser | boolean |
是否从浏览器中删除 Cookie |
抛出异常 | yii\base\InvalidCallException |
如果 Cookie 集合为只读 |
---|
public function remove($cookie, $removeFromBrowser = true)
{
if ($this->readOnly) {
throw new InvalidCallException('The cookie collection is read only.');
}
if ($cookie instanceof Cookie) {
$cookie->expire = 1;
$cookie->value = '';
} else {
$cookie = Yii::createObject([
'class' => 'yii\web\Cookie',
'name' => $cookie,
'expire' => 1,
]);
}
if ($removeFromBrowser) {
$this->_cookies[$cookie->name] = $cookie;
} else {
unset($this->_cookies[$cookie->name]);
}
}
删除所有Cookie。
public void removeAll ( ) | ||
抛出异常 | yii\base\InvalidCallException |
如果 Cookie 集合为只读 |
---|
public function removeAll()
{
if ($this->readOnly) {
throw new InvalidCallException('The cookie collection is read only.');
}
$this->_cookies = [];
}
将集合作为PHP数组返回。
public yii\web\Cookie[] toArray ( ) | ||
返回值 | yii\web\Cookie[] |
集合的数组表示形式。数组键是 Cookie 名称,数组值是相应的 Cookie 对象。 |
---|
public function toArray()
{
return $this->_cookies;
}
注册 或 登录 以发表评论。