PhpBridgeSessionStorage
class PhpBridgeSessionStorage extends NativeSessionStorage
Allows session to be started by PHP and managed by Symfony.
Methods
Constructor.
Starts the session.
Regenerates id that represents this storage.
Clear all session data in memory.
Gets a SessionBagInterface by name.
Registers session save handler as a PHP session handler.
Details
at line line 30
__construct(AbstractProxy|NativeSessionHandler|SessionHandlerInterface|null $handler = null, MetadataBag $metaBag = null)
Constructor.
in NativeSessionStorage at line line 115
AbstractProxy
getSaveHandler()
Gets the save handler instance.
at line line 39
bool
start()
Starts the session.
in NativeSessionStorage at line line 150
string
getId()
Returns the session ID.
in NativeSessionStorage at line line 158
setId(string $id)
Sets the session ID.
in NativeSessionStorage at line line 166
mixed
getName()
Returns the session name.
in NativeSessionStorage at line line 174
setName(string $name)
Sets the session name.
in NativeSessionStorage at line line 182
bool
regenerate(bool $destroy = false, int $lifetime = null)
Regenerates id that represents this storage.
This method must invoke sessionregenerateid($destroy) unless this interface is used for a storage object designed for unit or functional testing where a real PHP session would interfere with testing.
Note regenerate+destroy should not clear the session data in memory only delete the session data from persistent storage.
Care: When regenerating the session ID no locking is involved in PHPs session design. See https://bugs.php.net/bug.php?id=61470 for a discussion. So you must make sure the regenerated session is saved BEFORE sending the headers with the new ID. Symfonys HttpKernel offers a listener for this. See Symfony\Component\HttpKernel\EventListener\SaveSessionListener. Otherwise session data could get lost again for concurrent requests with the new ID. One result could be that you get logged out after just logging in.
in NativeSessionStorage at line line 214
save()
Force the session to be saved and closed.
This method must invoke sessionwriteclose() unless this interface is used for a storage object design for unit or functional testing where a real PHP session would interfere with testing, in which case it it should actually persist the session data if required.
at line line 53
clear()
Clear all session data in memory.
in NativeSessionStorage at line line 242
registerBag(SessionBagInterface $bag)
Registers a SessionBagInterface for use.
in NativeSessionStorage at line line 250
SessionBagInterface
getBag(string $name)
Gets a SessionBagInterface by name.
in NativeSessionStorage at line line 270
setMetadataBag(MetadataBag $metaBag = null)
Sets the MetadataBag.
in NativeSessionStorage at line line 284
MetadataBag
getMetadataBag()
Gets the MetadataBag.
in NativeSessionStorage at line line 292
bool
isStarted()
Checks if the session is started.
in NativeSessionStorage at line line 307
setOptions(array $options)
Sets session.* ini variables.
For convenience we omit 'session.' from the beginning of the keys. Explicitly ignores other ini keys.
in NativeSessionStorage at line line 350
setSaveHandler(AbstractProxy|NativeSessionHandler|SessionHandlerInterface|null $saveHandler = null)
Registers session save handler as a PHP session handler.
To use internal PHP session save handlers, override this method using iniset with session.savehandler and session.save_path e.g.
ini_set('session.save_handler', 'files');
ini_set('session.save_path', /tmp');
or pass in a NativeSessionHandler instance which configures session.save_handler in the constructor, for a template see NativeFileSessionHandler or use handlers in composer package drak/native-session