# Class yii\web\HeaderCollection

Inheritance | yii\web\HeaderCollection » yii\base\BaseObject
Implements | ArrayAccess, Countable, IteratorAggregate, yii\base\Configurable
Available since version | 2.0
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/web/HeaderCollection.php

HeaderCollection is used by yii\web\Response to maintain the currently registered HTTP headers.

## Public Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---
$count | integer | The number of headers in the collection. | yii\web\HeaderCollection
$iterator | ArrayIterator | An iterator for traversing the headers in the collection. | yii\web\HeaderCollection

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
__call() | Calls the named method which is not a class method. | yii\base\BaseObject
__construct() | Constructor. | yii\base\BaseObject
__get() | Returns the value of an object property. | yii\base\BaseObject
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\BaseObject
__set() | Sets value of an object property. | yii\base\BaseObject
__unset() | Sets an object property to null. | yii\base\BaseObject
add() | Adds a new header. | yii\web\HeaderCollection
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\BaseObject
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\BaseObject
className() | Returns the fully qualified name of this class. | yii\base\BaseObject
count() | Returns the number of headers in the collection. | yii\web\HeaderCollection
fromArray() | Populates the header collection from an array. | yii\web\HeaderCollection
get() | Returns the named header(s). | yii\web\HeaderCollection
getCount() | Returns the number of headers in the collection. | yii\web\HeaderCollection
getIterator() | Returns an iterator for traversing the headers in the collection. | yii\web\HeaderCollection
has() | Returns a value indicating whether the named header exists. | yii\web\HeaderCollection
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\BaseObject
hasProperty() | Returns a value indicating whether a property is defined. | yii\base\BaseObject
init() | Initializes the object. | yii\base\BaseObject
offsetExists() | Returns whether there is a header with the specified name. | yii\web\HeaderCollection
offsetGet() | Returns the header with the specified name. | yii\web\HeaderCollection
offsetSet() | Adds the header to the collection. | yii\web\HeaderCollection
offsetUnset() | Removes the named header. | yii\web\HeaderCollection
remove() | Removes a header. | yii\web\HeaderCollection
removeAll() | Removes all headers. | yii\web\HeaderCollection
set() | Adds a new header. | yii\web\HeaderCollection
setDefault() | Sets a new header only if it does not exist yet. | yii\web\HeaderCollection
toArray() | Returns the collection as a PHP array. | yii\web\HeaderCollection
toOriginalArray() | Returns the collection as a PHP array but instead of using normalized header names as keys (like toArray()) it uses original header names (case-sensitive). | yii\web\HeaderCollection

## Property Details

Hide inherited properties

$count public read-only property

The number of headers in the collection.

public integer getCount ( )
$iterator public read-only property

An iterator for traversing the headers in the collection.

public ArrayIterator getIterator ( )

## Method Details

Hide inherited methods

__call() public method

Defined in: yii\base\BaseObject::__call()

Calls the named method which is not a class method.

Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.

public mixed __call ( $name, $params )
$name | string | The method name
$params | array | Method parameters
return | mixed | The method return value
throws | yii\base\UnknownMethodException | when calling unknown method

Source code

                    public function __call($name, $params)
    {
        throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
    }

__construct() public method

Defined in: yii\base\BaseObject::__construct()

Constructor.

The default implementation does two things:

- Initializes the object with the given configuration `$config`.
- Call init().

If this method is overridden in a child class, it is recommended that

- the last parameter of the constructor is a configuration array, like `$config` here.
- call the parent implementation at the end of the constructor.

public void __construct ( $config = [] )
$config | array | Name-value pairs that will be used to initialize the object properties

Source code

                    public function __construct($config = [])
    {
        if (!empty($config)) {
            Yii::configure($this, $config);
        }
        $this->init();
    }

__get() public method

Defined in: yii\base\BaseObject::__get()

Returns the value of an object property.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `$value = $object->property;`.

See also __set().

public mixed __get ( $name )
$name | string | The property name
return | mixed | The property value
throws | yii\base\UnknownPropertyException | if the property is not defined
throws | yii\base\InvalidCallException | if the property is write-only

Source code

                    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() public method

Defined in: yii\base\BaseObject::__isset()

Checks if a property is set, i.e. defined and not null.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `isset($object->property)`.

Note that if the property is not defined, false will be returned.

See also https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$name | string | The property name or the event name
return | boolean | Whether the named property is set (not null).

Source code

                    public function __isset($name)
    {
        $getter = 'get' . $name;
        if (method_exists($this, $getter)) {
            return $this->$getter() !== null;
        }
        return false;
    }

__set() public method

Defined in: yii\base\BaseObject::__set()

Sets value of an object property.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `$object->property = $value;`.

See also __get().

public void __set ( $name, $value )
$name | string | The property name or the event name
$value | mixed | The property value
throws | yii\base\UnknownPropertyException | if the property is not defined
throws | yii\base\InvalidCallException | if the property is read-only

Source code

                    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() public method

Defined in: yii\base\BaseObject::__unset()

Sets an object property to null.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing `unset($object->property)`.

Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.

See also https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name | string | The property name
throws | yii\base\InvalidCallException | if the property is read only.

Source code

                    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() public method

Adds a new header.

If there is already a header with the same name, the new one will be appended to it instead of replacing it.

public $this add ( $name, $value )
$name | string | The name of the header
$value | string | The value of the header
return | $this | The collection object itself

Source code

                    public function add($name, $value)
    {
        $normalizedName = strtolower($name);
        $this->_headers[$normalizedName][] = $value;
        if (!\array_key_exists($normalizedName, $this->_originalHeaderNames)) {
            $this->_originalHeaderNames[$normalizedName] = $name;
        }
        return $this;
    }

canGetProperty() public method

Defined in: yii\base\BaseObject::canGetProperty()

Returns a value indicating whether a property can be read.

A property is readable if:

- the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when `$checkVars` is true);

See also canSetProperty().

public boolean canGetProperty ( $name, $checkVars = true )
$name | string | The property name
$checkVars | boolean | Whether to treat member variables as properties
return | boolean | Whether the property can be read

Source code

                    public function canGetProperty($name, $checkVars = true)
    {
        return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
    }

canSetProperty() public method

Defined in: yii\base\BaseObject::canSetProperty()

Returns a value indicating whether a property can be set.

A property is writable if:

- the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when `$checkVars` is true);

See also canGetProperty().

public boolean canSetProperty ( $name, $checkVars = true )
$name | string | The property name
$checkVars | boolean | Whether to treat member variables as properties
return | boolean | Whether the property can be written

Source code

                    public function canSetProperty($name, $checkVars = true)
    {
        return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
    }

className() public static method
Deprecated since 2.0.14. On PHP >=5.5, use `::class` instead.

Defined in: yii\base\BaseObject::className()

Returns the fully qualified name of this class.

public static string className ( )
return | string | The fully qualified name of this class.

Source code

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

count() public method

Returns the number of headers in the collection.

This method is required by the SPL `Countable` interface. It will be implicitly called when you use `count($collection)`.

public integer count ( )
return | integer | The number of headers in the collection.

Source code

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

fromArray() public method (available since version 2.0.3)

Populates the header collection from an array.

public void fromArray ( array $array )
$array | array | The headers to populate from

Source code

                    public function fromArray(array $array)
    {
        foreach ($array as $name => $value) {
            $this->set($name, $value);
        }
    }

get() public method

Returns the named header(s).

public string|array|null get ( $name, $default = null, $first = true )
$name | string | The name of the header to return
$default | mixed | The value to return in case the named header does not exist
$first | boolean | Whether to only return the first header of the specified name. If false, all headers of the specified name will be returned.
return | string|array|null | The named header(s). If `$first` is true, a string will be returned; If `$first` is false, an array will be returned.

Source code

                    public function get($name, $default = null, $first = true)
    {
        $normalizedName = strtolower($name);
        if (isset($this->_headers[$normalizedName])) {
            return $first ? reset($this->_headers[$normalizedName]) : $this->_headers[$normalizedName];
        }
        return $default;
    }

getCount() public method

Returns the number of headers in the collection.

public integer getCount ( )
return | integer | The number of headers in the collection.

Source code

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

getIterator() public method

Returns an iterator for traversing the headers in the collection.

This method is required by the SPL interface IteratorAggregate. It will be implicitly called when you use `foreach` to traverse the collection.

public ArrayIterator getIterator ( )
return | ArrayIterator | An iterator for traversing the headers in the collection.

Source code

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

has() public method

Returns a value indicating whether the named header exists.

public boolean has ( $name )
$name | string | The name of the header
return | boolean | Whether the named header exists

Source code

                    public function has($name)
    {
        return isset($this->_headers[strtolower($name)]);
    }

hasMethod() public method

Defined in: yii\base\BaseObject::hasMethod()

Returns a value indicating whether a method is defined.

The default implementation is a call to php function `method_exists()`. You may override this method when you implemented the php magic method `__call()`.

public boolean hasMethod ( $name )
$name | string | The method name
return | boolean | Whether the method is defined

Source code

                    public function hasMethod($name)
    {
        return method_exists($this, $name);
    }

hasProperty() public method

Defined in: yii\base\BaseObject::hasProperty()

Returns a value indicating whether a property is defined.

A property is defined if:

- the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when `$checkVars` is true);

See also:

- canGetProperty()
- canSetProperty()

public boolean hasProperty ( $name, $checkVars = true )
$name | string | The property name
$checkVars | boolean | Whether to treat member variables as properties
return | boolean | Whether the property is defined

Source code

                    public function hasProperty($name, $checkVars = true)
    {
        return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
    }

init() public method

Defined in: yii\base\BaseObject::init()

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public void init ( )

Source code

                    public function init()
    {
    }

offsetExists() public method

Returns whether there is a header with the specified name.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like `isset($collection[$name])`.

public boolean offsetExists ( $name )
$name | string | The header name
return | boolean | Whether the named header exists

Source code

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

offsetGet() public method

Returns the header with the specified name.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like `$header = $collection[$name];`. This is equivalent to get().

public string|null offsetGet ( $name )
$name | string | The header name
return | string|null | The header value with the specified name, null if the named header does not exist.

Source code

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

offsetSet() public method

Adds the header to the collection.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like `$collection[$name] = $header;`. This is equivalent to add().

public void offsetSet ( $name, $value )
$name | string | The header name
$value | string | The header value to be added

Source code

                    #[\ReturnTypeWillChange]
    public function offsetSet($name, $value)
    {
        $this->set($name, $value);
    }

offsetUnset() public method

Removes the named header.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like `unset($collection[$name])`. This is equivalent to remove().

public void offsetUnset ( $name )
$name | string | The header name

Source code

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

remove() public method

Removes a header.

public array|null remove ( $name )
$name | string | The name of the header to be removed.
return | array|null | The value of the removed header. Null is returned if the header does not exist.

Source code

                    public function remove($name)
    {
        $normalizedName = strtolower($name);
        if (isset($this->_headers[$normalizedName])) {
            $value = $this->_headers[$normalizedName];
            unset($this->_headers[$normalizedName], $this->_originalHeaderNames[$normalizedName]);
            return $value;
        }
        return null;
    }

removeAll() public method

Removes all headers.

public void removeAll ( )

Source code

                    public function removeAll()
    {
        $this->_headers = [];
        $this->_originalHeaderNames = [];
    }

set() public method

Adds a new header.

If there is already a header with the same name, it will be replaced.

public $this set ( $name, $value = '' )
$name | string | The name of the header
$value | string | The value of the header
return | $this | The collection object itself

Source code

                    public function set($name, $value = '')
    {
        $normalizedName = strtolower($name);
        $this->_headers[$normalizedName] = (array) $value;
        $this->_originalHeaderNames[$normalizedName] = $name;
        return $this;
    }

setDefault() public method

Sets a new header only if it does not exist yet.

If there is already a header with the same name, the new one will be ignored.

public $this setDefault ( $name, $value )
$name | string | The name of the header
$value | string | The value of the header
return | $this | The collection object itself

Source code

                    public function setDefault($name, $value)
    {
        $normalizedName = strtolower($name);
        if (empty($this->_headers[$normalizedName])) {
            $this->_headers[$normalizedName][] = $value;
            $this->_originalHeaderNames[$normalizedName] = $name;
        }
        return $this;
    }

toArray() public method

Returns the collection as a PHP array.

public array toArray ( )
return | array | The array representation of the collection. The array keys are header names, and the array values are the corresponding header values.

Source code

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

toOriginalArray() public method (available since version 2.0.45)

Returns the collection as a PHP array but instead of using normalized header names as keys (like toArray()) it uses original header names (case-sensitive).

public array toOriginalArray ( )
return | array | The array representation of the collection.

Source code

                    public function toOriginalArray()
    {
        return \array_map(function ($normalizedName) {
            return $this->_headers[$normalizedName];
        }, \array_flip($this->_originalHeaderNames));
    }