# SessionInterface

interface SessionInterface

Interface for the session.

## Methods

`public` | `bool` | `start()` | Starts the session storage. |
`public` | `string` | `getId()` | Returns the session ID. |
`public` | `` | `setId(string $id)` | Sets the session ID. |
`public` | `mixed` | `getName()` | Returns the session name. |
`public` | `` | `setName(string $name)` | Sets the session name. |
`public` | `bool` | `invalidate(int $lifetime = null)` | Invalidates the current session. |
`public` | `bool` | `migrate(bool $destroy = false, int $lifetime = null)` | Migrates the current session to a new session id while maintaining all session attributes. |
`public` | `` | `save()` | Force the session to be saved and closed. |
`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` | `` | `clear()` | Clears all attributes. |
`public` | `bool` | `isStarted()` | Checks if the session was started. |
`public` | `` | `registerBag(SessionBagInterface $bag)` | Registers a SessionBagInterface with the session. |
`public` | `SessionBagInterface` | `getBag(string $name)` | Gets a bag instance by name. |
`public` | `MetadataBag` | `getMetadataBag()` | Gets session meta. |

## Details

at line 30

### `start()`

`public bool start()`

Starts the session storage.

#### Return Value

`bool` | True if session started

#### Exceptions

RuntimeException | if session fails to start

at line 37

### `getId()`

`public string getId()`

Returns the session ID.

#### Return Value

`string` | The session ID

at line 44

### `setId()`

`public setId(string $id)`

Sets the session ID.

#### Parameters

`string` | `$id` |

at line 51

### `getName()`

`public mixed getName()`

Returns the session name.

#### Return Value

`mixed` | The session name

at line 58

### `setName()`

`public setName(string $name)`

Sets the session name.

#### Parameters

`string` | `$name` |

at line 73

### `invalidate()`

`public bool invalidate(int $lifetime = null)`

Invalidates the current session.

Clears all session attributes and flashes and regenerates the session and deletes the old session from persistence.

#### Parameters

`int` | `$lifetime` | Sets the cookie lifetime for the session cookie. A null value will leave the system settings unchanged, 0 sets the cookie to expire with browser session. Time is in seconds, and is not a Unix timestamp.

#### Return Value

`bool` | True if session invalidated, false if error

at line 87

### `migrate()`

`public bool migrate(bool $destroy = false, int $lifetime = null)`

Migrates the current session to a new session id while maintaining all session attributes.

#### Parameters

`bool` | `$destroy` | Whether to delete the old session or leave it to garbage collection
`int` | `$lifetime` | Sets the cookie lifetime for the session cookie. A null value will leave the system settings unchanged, 0 sets the cookie to expire with browser session. Time is in seconds, and is not a Unix timestamp.

#### Return Value

`bool` | True if session migrated, false if error

at line 96

### `save()`

`public save()`

Force the session to be saved and closed.

This method is generally not required for real sessions as the session will be automatically saved at the end of code execution.

at line 105

### `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 115

### `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 123

### `set()`

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

Sets an attribute.

#### Parameters

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

at line 130

### `all()`

`public array all()`

Returns attributes.

#### Return Value

`array` | Attributes

at line 137

### `replace()`

`public replace(array $attributes)`

Sets attributes.

#### Parameters

`array` | `$attributes` | Attributes

at line 146

### `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 151

### `clear()`

`public clear()`

Clears all attributes.

at line 158

### `isStarted()`

`public bool isStarted()`

Checks if the session was started.

#### Return Value

`bool` |

at line 163

### `registerBag()`

`public registerBag(SessionBagInterface $bag)`

Registers a SessionBagInterface with the session.

#### Parameters

`SessionBagInterface` | `$bag` |

at line 172

### `getBag()`

`public SessionBagInterface getBag(string $name)`

Gets a bag instance by name.

#### Parameters

`string` | `$name` |

#### Return Value

`SessionBagInterface` |

at line 179

### `getMetadataBag()`

`public MetadataBag getMetadataBag()`

Gets session meta.

#### Return Value

`MetadataBag` |

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

    use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;

    /**
     * Interface for the session.
     *
     * @author Drak <drak@zikula.org>
     */
    interface SessionInterface
    {
        /**
         * Starts the session storage.
         *
         * @return bool True if session started
         *
         * @throws \RuntimeException if session fails to start
         */
        public function start();

        /**
         * Returns the session ID.
         *
         * @return string The session ID
         */
        public function getId();

        /**
         * Sets the session ID.
         *
         * @param string $id
         */
        public function setId($id);

        /**
         * Returns the session name.
         *
         * @return mixed The session name
         */
        public function getName();

        /**
         * Sets the session name.
         *
         * @param string $name
         */
        public function setName($name);

        /**
         * Invalidates the current session.
         *
         * Clears all session attributes and flashes and regenerates the
         * session and deletes the old session from persistence.
         *
         * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
         *                      will leave the system settings unchanged, 0 sets the cookie
         *                      to expire with browser session. Time is in seconds, and is
         *                      not a Unix timestamp.
         *
         * @return bool True if session invalidated, false if error
         */
        public function invalidate($lifetime = null);

        /**
         * Migrates the current session to a new session id while maintaining all
         * session attributes.
         *
         * @param bool $destroy  Whether to delete the old session or leave it to garbage collection
         * @param int  $lifetime Sets the cookie lifetime for the session cookie. A null value
         *                       will leave the system settings unchanged, 0 sets the cookie
         *                       to expire with browser session. Time is in seconds, and is
         *                       not a Unix timestamp.
         *
         * @return bool True if session migrated, false if error
         */
        public function migrate($destroy = false, $lifetime = null);

        /**
         * Force the session to be saved and closed.
         *
         * This method is generally not required for real sessions as
         * the session will be automatically saved at the end of
         * code execution.
         */
        public function save();

        /**
         * Checks if an attribute is defined.
         *
         * @param string $name The attribute name
         *
         * @return bool true if the attribute is defined, false otherwise
         */
        public function has($name);

        /**
         * Returns an attribute.
         *
         * @param string $name    The attribute name
         * @param mixed  $default The default value if not found
         *
         * @return mixed
         */
        public function get($name, $default = null);

        /**
         * Sets an attribute.
         *
         * @param string $name
         * @param mixed  $value
         */
        public function set($name, $value);

        /**
         * Returns attributes.
         *
         * @return array Attributes
         */
        public function all();

        /**
         * Sets attributes.
         *
         * @param array $attributes Attributes
         */
        public function replace(array $attributes);

        /**
         * Removes an attribute.
         *
         * @param string $name
         *
         * @return mixed The removed value or null when it does not exist
         */
        public function remove($name);

        /**
         * Clears all attributes.
         */
        public function clear();

        /**
         * Checks if the session was started.
         *
         * @return bool
         */
        public function isStarted();

        /**
         * Registers a SessionBagInterface with the session.
         */
        public function registerBag(SessionBagInterface $bag);

        /**
         * Gets a bag instance by name.
         *
         * @param string $name
         *
         * @return SessionBagInterface
         */
        public function getBag($name);

        /**
         * Gets session meta.
         *
         * @return MetadataBag
         */
        public function getMetadataBag();
    }