0 关注者

类 yii\web\CookieCollection

继承关系yii\web\CookieCollection » yii\base\BaseObject
实现接口ArrayAccess, Countable, IteratorAggregate, yii\base\Configurable
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/CookieCollection.php

CookieCollection维护当前请求中可用的Cookie。

有关CookieCollection的更多详细信息和用法信息,请参阅处理Cookie的指南文章

公共属性

隐藏继承属性

属性 类型 描述 定义于
$count integer 集合中Cookie的数量。 yii\web\CookieCollection
$iterator \ArrayIterator 用于遍历集合中Cookie的迭代器。 yii\web\CookieCollection
$readOnly boolean 此集合是否为只读。 yii\web\CookieCollection

公共方法

隐藏继承方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\BaseObject
__construct() 构造函数。 yii\web\CookieCollection
__get() 返回对象属性的值。 yii\base\BaseObject
__isset() 检查属性是否已设置,即已定义且不为null。 yii\base\BaseObject
__set() 设置对象属性的值。 yii\base\BaseObject
__unset() 将对象属性设置为null。 yii\base\BaseObject
add() 向集合中添加一个Cookie。 yii\web\CookieCollection
canGetProperty() 返回一个值,指示是否可以读取属性。 yii\base\BaseObject
canSetProperty() 返回一个值,指示是否可以设置属性。 yii\base\BaseObject
className() 返回此类的完全限定名称。 yii\base\BaseObject
count() 返回集合中Cookie的数量。 yii\web\CookieCollection
fromArray() 从数组填充Cookie集合。 yii\web\CookieCollection
get() 返回指定名称的Cookie。 yii\web\CookieCollection
getCount() 返回集合中Cookie的数量。 yii\web\CookieCollection
getIterator() 返回用于遍历集合中Cookie的迭代器。 yii\web\CookieCollection
getValue() 返回指定名称的Cookie的值。 yii\web\CookieCollection
has() 返回是否存在指定名称的Cookie。 yii\web\CookieCollection
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\BaseObject
hasProperty() 返回一个值,指示属性是否已定义。 yii\base\BaseObject
init() 初始化对象。 yii\base\BaseObject
offsetExists() 返回是否存在指定名称的Cookie。 yii\web\CookieCollection
offsetGet() 返回指定名称的Cookie。 yii\web\CookieCollection
offsetSet() 将Cookie添加到集合中。 yii\web\CookieCollection
offsetUnset() 删除指定名称的Cookie。 yii\web\CookieCollection
remove() 删除一个Cookie。 yii\web\CookieCollection
removeAll() 删除所有Cookie。 yii\web\CookieCollection
toArray() 将集合作为PHP数组返回。 yii\web\CookieCollection

属性详情

隐藏继承属性

$count 公共属性

集合中Cookie的数量。

public integer $count null
$iterator 公共只读属性

用于遍历集合中Cookie的迭代器。

public \ArrayIterator getIterator ( )
$readOnly 公共属性

此集合是否为只读。

public boolean $readOnly false

方法详情

隐藏继承方法

__call() 公共方法

定义于: yii\base\BaseObject::__call()

调用不是类方法的命名方法。

不要直接调用此方法,因为它是一个PHP魔术方法,当调用未知方法时会隐式调用。

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()");
}

            
__construct() 公共方法

构造函数。

public void __construct ( $cookies = [], $config = [] )
$cookies array

此集合最初包含的Cookie。这应该是一个名称-值对数组。

$config array

将用于初始化对象属性的名称-值对

                public function __construct($cookies = [], $config = [])
{
    $this->_cookies = $cookies;
    parent::__construct($config);
}

            
__get() 公共方法

定义于: 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);
}

            
__isset() 公共方法

定义于: yii\base\BaseObject::__isset()

检查属性是否已设置,即已定义且不为null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($object->property) 时会被隐式调用。

请注意,如果属性未定义,则将返回 false。

另见 https://php.ac.cn/manual/en/function.isset.php

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;
}

            
__set() 公共方法

定义于: 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);
    }
}

            
__unset() 公共方法

定义于: yii\base\BaseObject::__unset()

将对象属性设置为null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property) 时会被隐式调用。

请注意,如果属性未定义,则此方法将不做任何操作。如果属性为只读,则会抛出异常。

另见 https://php.ac.cn/manual/en/function.unset.php

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);
    }
}

            
add() 公共方法

向集合中添加一个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;
}

            
canGetProperty() 公共方法

定义于: 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);
}

            
canSetProperty() 公共方法

定义于: 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);
}

            
className() 公共静态方法
自 2.0.14 版起已弃用。在 PHP >=5.5 上,请改用 ::class

定义于: yii\base\BaseObject::className()

返回此类的完全限定名称。

public static string className ( )
返回值 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
count() 公共方法

返回集合中Cookie的数量。

此方法由 SPL 的 Countable 接口要求。当您使用 count($collection) 时,它将被隐式调用。

public integer count ( )
返回值 integer

集合中Cookie的数量。

                #[\ReturnTypeWillChange]
public function count()
{
    return $this->getCount();
}

            
fromArray() 公共方法(自 2.0.3 版起可用)

从数组填充Cookie集合。

public void fromArray ( array $array )
$array array

要从中填充的 Cookie

                public function fromArray(array $array)
{
    $this->_cookies = $array;
}

            
get() 公共方法

返回指定名称的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;
}

            
getCount() 公共方法

返回集合中Cookie的数量。

public integer getCount ( )
返回值 integer

集合中Cookie的数量。

                public function getCount()
{
    return count($this->_cookies);
}

            
getIterator() 公共方法

返回用于遍历集合中Cookie的迭代器。

此方法由 SPL 接口 IteratorAggregate 要求。当您使用 foreach 遍历集合时,它将被隐式调用。

public \ArrayIterator getIterator ( )
返回值 \ArrayIterator

用于遍历集合中Cookie的迭代器。

                #[\ReturnTypeWillChange]
public function getIterator()
{
    return new ArrayIterator($this->_cookies);
}

            
getValue() 公共方法

返回指定名称的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;
}

            
has() 公共方法

返回是否存在指定名称的Cookie。

请注意,如果 Cookie 被标记为从浏览器中删除或其值为一个空字符串,则此方法将返回 false。

另请参阅 remove()

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()
            )
        );
}

            
hasMethod() 公共方法

定义于: 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);
}

            
hasProperty() 公共方法

定义于: 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);
}

            
init() 公共方法

定义于: yii\base\BaseObject::init()

初始化对象。

此方法在构造函数结束时调用,在对象使用给定配置初始化后调用。

public void init ( )

                public function init()
{
}

            
offsetExists() 公共方法

返回是否存在指定名称的Cookie。

此方法由 SPL 接口 ArrayAccess 要求。当您使用类似 isset($collection[$name]) 的内容时,它会被隐式调用。

public boolean offsetExists ( $name )
$name string

Cookie 名称

返回值 boolean

指定的 Cookie 是否存在

                #[\ReturnTypeWillChange]
public function offsetExists($name)
{
    return $this->has($name);
}

            
offsetGet() 公共方法

返回指定名称的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);
}

            
offsetSet() 公共方法

将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);
}

            
offsetUnset() 公共方法

删除指定名称的Cookie。

此方法由 SPL 接口 ArrayAccess 要求。当您使用类似 unset($collection[$name]) 的内容时,它会被隐式调用。这等效于 remove()

public void offsetUnset ( $name )
$name string

Cookie 名称

                #[\ReturnTypeWillChange]
public function offsetUnset($name)
{
    $this->remove($name);
}

            
remove() 公共方法

删除一个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]);
    }
}

            
removeAll() 公共方法

删除所有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 = [];
}

            
toArray() 公共方法

将集合作为PHP数组返回。

public yii\web\Cookie[] toArray ( )
返回值 yii\web\Cookie[]

集合的数组表示形式。数组键是 Cookie 名称,数组值是相应的 Cookie 对象。

                public function toArray()
{
    return $this->_cookies;
}