PHP has its own session management system and it requires $_SESSION to access session variables. However, it interferes the code testability while working with OOPs in PHP. To overcome this, Symfony 2 introduces concept of session bag that is linked to encapsulating a specific dataset of attributes. Each of these bags stores all of it’s data under a unique namespace. This allow symfony to co-work with other applications that uses $_SESSION super-global and nall data remains completely with symfony’s session management.
Session management is handled by Symfony HttpFoundation component, that has a very powerful and flexible session subsystem which is designed to provide session management through a simple object-oriented interface using a variety of session storage drivers.
Symfony sessions are designed to replace PHP session functions like session_start(), session_destroy(), session_id() etc. Symfony sessions are incompatible with php.ini directive session.auto_start = 1 This directive should be turned off in php.ini, in the webserver directives or in .htaccess.
#Session WorkFlow
- Start the session using start()
- Regenerate the session ID using migrate()
- Clear all session data and regenerate session ID using invalidate()
- Get the session ID using getId()
- Set the session ID using setId()
- Get the session name using getName()
- Set the session name using setName()
#Session Attributes
Session attributes are stored in a bag, and acts like an array.
- set() : Sets an attribute by key.
- get() : Gets an attribute by key.
- all() : Gets all attributes as an array of key => value.
- has() : Returns true if the attribute exists.
- replace() : Sets multiple attributes at once: takes a keyed array and sets each key => value pair.
- remove() : Deletes an attribute by key.
- clear() : Clear all attributes.
#Bag Management
- registerBag() : Registers a SessionBagInterface.
- getBag() : Gets a SessionBagInterface by bag name.
- getFlashBag() : Gets the FlashBagInterface. This is just a shortcut for convenience.
#Basic Example
<?php
use Symfony\Component\HttpFoundation\Session\Session;
$session = new Session();
$session->start();
// setting and getting sessions
$session->set('username', 'digvijaytiwari');
$session->get('name');
?>
This is the small information about Symfony session. Try this Guys and write me up if you get any issue. If you have more information then please write a guest article here. I will publish that with your name.
Cheers!!!