# SessionBagProxy

class SessionBagProxy implements SessionBagInterface

## Methods

`public` | `` | `__construct(SessionBagInterface $bag, array $data, $hasBeenStarted)` | No description |
`public` | `SessionBagInterface` | `getBag()` | No description |
`public` | `bool` | `isEmpty()` | No description |
`public` | `string` | `getName()` | Gets this bag's name. |
`public` | `` | `initialize(array $array)` | Initializes the Bag. |
`public` | `string` | `getStorageKey()` | Gets the storage key for this bag. |
`public` | `mixed` | `clear()` | Clears out data from bag. |

## Details

at line 25

### `__construct()`

`public __construct(SessionBagInterface $bag, array $data, $hasBeenStarted)`

#### Parameters

`SessionBagInterface` | `$bag` |
`array` | `$data` |
| `$hasBeenStarted` |

at line 35

### `getBag()`

`public SessionBagInterface getBag()`

#### Return Value

`SessionBagInterface` |

at line 43

### `isEmpty()`

`public bool isEmpty()`

#### Return Value

`bool` |

at line 51

### `getName()`

`public string getName()`

Gets this bag's name.

#### Return Value

`string` |

at line 59

### `initialize()`

`public initialize(array $array)`

Initializes the Bag.

#### Parameters

`array` | `$array` |

at line 70

### `getStorageKey()`

`public string getStorageKey()`

Gets the storage key for this bag.

#### Return Value

`string` |

at line 78

### `clear()`

`public mixed clear()`

Clears out data from bag.

#### Return Value

`mixed` | Whatever data was contained

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

    /**
     * @author Nicolas Grekas <p@tchwork.com>
     *
     * @internal
     */
    final class SessionBagProxy implements SessionBagInterface
    {
        private $bag;
        private $data;
        private $hasBeenStarted;

        public function __construct(SessionBagInterface $bag, array &$data, &$hasBeenStarted)
        {
            $this->bag = $bag;
            $this->data = &$data;
            $this->hasBeenStarted = &$hasBeenStarted;
        }

        /**
         * @return SessionBagInterface
         */
        public function getBag()
        {
            return $this->bag;
        }

        /**
         * @return bool
         */
        public function isEmpty()
        {
            return empty($this->data[$this->bag->getStorageKey()]);
        }

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

        /**
         * {@inheritdoc}
         */
        public function initialize(array &$array)
        {
            $this->hasBeenStarted = true;
            $this->data[$this->bag->getStorageKey()] = &$array;

            $this->bag->initialize($array);
        }

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

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