# AttributeBag

class AttributeBag implements AttributeBagInterface, IteratorAggregate, Countable

This class relates to session attribute storage.

## Properties

`protected` | `$attributes` |  |

## Methods

`public` | `` | `__construct(string $storageKey = '_sf2_attributes')` | No description |
`public` | `string` | `getName()` | Gets this bag's name. |
`public` | `` | `setName($name)` | No description |
`public` | `` | `initialize(array $attributes)` | Initializes the Bag. |
`public` | `string` | `getStorageKey()` | Gets the storage key for this bag. |
`public` | `bool` | `has(string $name)` | Checks if an attribute is defined. |
`public` | `mixed` | `get(string $name, mixed $default = null)` | Returns an attribute. |
`public` | `` | `set(string $name, mixed $value)` | Sets an attribute. |
`public` | `array` | `all()` | Returns attributes. |
`public` | `` | `replace(array $attributes)` | Sets attributes. |
`public` | `mixed` | `remove(string $name)` | Removes an attribute. |
`public` | `mixed` | `clear()` | Clears out data from bag. |
`public` | `ArrayIterator` | `getIterator()` | Returns an iterator for attributes. |
`public` | `int` | `count()` | Returns the number of attributes. |

## Details

at line 27

### `__construct()`

`public __construct(string $storageKey = '_sf2_attributes')`

#### Parameters

`string` | `$storageKey` | The key used to store attributes in the session

at line 35

### `getName()`

`public string getName()`

Gets this bag's name.

#### Return Value

`string` |

at line 40

### `setName()`

`public setName($name)`

#### Parameters

| `$name` |

at line 48

### `initialize()`

`public initialize(array $attributes)`

Initializes the Bag.

#### Parameters

`array` | `$attributes` |

at line 56

### `getStorageKey()`

`public string getStorageKey()`

Gets the storage key for this bag.

#### Return Value

`string` |

at line 64

### `has()`

`public bool has(string $name)`

Checks if an attribute is defined.

#### Parameters

`string` | `$name` | The attribute name

#### Return Value

`bool` | true if the attribute is defined, false otherwise

at line 72

### `get()`

`public mixed get(string $name, mixed $default = null)`

Returns an attribute.

#### Parameters

`string` | `$name` | The attribute name
`mixed` | `$default` | The default value if not found

#### Return Value

`mixed` |

at line 80

### `set()`

`public set(string $name, mixed $value)`

Sets an attribute.

#### Parameters

`string` | `$name` |
`mixed` | `$value` |

at line 88

### `all()`

`public array all()`

Returns attributes.

#### Return Value

`array` | Attributes

at line 96

### `replace()`

`public replace(array $attributes)`

Sets attributes.

#### Parameters

`array` | `$attributes` | Attributes

at line 107

### `remove()`

`public mixed remove(string $name)`

Removes an attribute.

#### Parameters

`string` | `$name` |

#### Return Value

`mixed` | The removed value or null when it does not exist

at line 121

### `clear()`

`public mixed clear()`

Clears out data from bag.

#### Return Value

`mixed` | Whatever data was contained

at line 134

### `getIterator()`

`public ArrayIterator getIterator()`

Returns an iterator for attributes.

#### Return Value

`ArrayIterator` | An \ArrayIterator instance

at line 144

### `count()`

`public int count()`

Returns the number of attributes.

#### Return Value

`int` | The number of attributes

## Source code

    <?php

    /*
     * This file is part of the Symfony package.
     *
     * (c) Fabien Potencier <fabien@symfony.com>
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */

    namespace Symfony\Component\HttpFoundation\Session\Attribute;

    /**
     * This class relates to session attribute storage.
     */
    class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable
    {
        private $name = 'attributes';
        private $storageKey;

        protected $attributes = array();

        /**
         * @param string $storageKey The key used to store attributes in the session
         */
        public function __construct(string $storageKey = '_sf2_attributes')
        {
            $this->storageKey = $storageKey;
        }

        /**
         * {@inheritdoc}
         */
        public function getName()
        {
            return $this->name;
        }

        public function setName($name)
        {
            $this->name = $name;
        }

        /**
         * {@inheritdoc}
         */
        public function initialize(array &$attributes)
        {
            $this->attributes = &$attributes;
        }

        /**
         * {@inheritdoc}
         */
        public function getStorageKey()
        {
            return $this->storageKey;
        }

        /**
         * {@inheritdoc}
         */
        public function has($name)
        {
            return array_key_exists($name, $this->attributes);
        }

        /**
         * {@inheritdoc}
         */
        public function get($name, $default = null)
        {
            return array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default;
        }

        /**
         * {@inheritdoc}
         */
        public function set($name, $value)
        {
            $this->attributes[$name] = $value;
        }

        /**
         * {@inheritdoc}
         */
        public function all()
        {
            return $this->attributes;
        }

        /**
         * {@inheritdoc}
         */
        public function replace(array $attributes)
        {
            $this->attributes = array();
            foreach ($attributes as $key => $value) {
                $this->set($key, $value);
            }
        }

        /**
         * {@inheritdoc}
         */
        public function remove($name)
        {
            $retval = null;
            if (array_key_exists($name, $this->attributes)) {
                $retval = $this->attributes[$name];
                unset($this->attributes[$name]);
            }

            return $retval;
        }

        /**
         * {@inheritdoc}
         */
        public function clear()
        {
            $return = $this->attributes;
            $this->attributes = array();

            return $return;
        }

        /**
         * Returns an iterator for attributes.
         *
         * @return \ArrayIterator An \ArrayIterator instance
         */
        public function getIterator()
        {
            return new \ArrayIterator($this->attributes);
        }

        /**
         * Returns the number of attributes.
         *
         * @return int The number of attributes
         */
        public function count()
        {
            return count($this->attributes);
        }
    }