W3cubDocs

/Symfony 4.1

PhpBridgeSessionStorage

class PhpBridgeSessionStorage extends NativeSessionStorage

Allows session to be started by PHP and managed by Symfony.

Properties

protected SessionBagInterface[] $bags from NativeSessionStorage
protected bool $started from NativeSessionStorage
protected bool $closed from NativeSessionStorage
protected AbstractProxy|SessionHandlerInterface $saveHandler from NativeSessionStorage
protected MetadataBag $metadataBag from NativeSessionStorage

Methods

__construct(SessionHandlerInterface|null $handler = null, MetadataBag $metaBag = null)
AbstractProxy|SessionHandlerInterface getSaveHandler()

Gets the save handler instance.

from NativeSessionStorage
bool start()

Starts the session.

string getId()

Returns the session ID.

from NativeSessionStorage
setId(string $id)

Sets the session ID.

from NativeSessionStorage
mixed getName()

Returns the session name.

from NativeSessionStorage
setName(string $name)

Sets the session name.

from NativeSessionStorage
bool regenerate(bool $destroy = false, int $lifetime = null)

Regenerates id that represents this storage.

from NativeSessionStorage
save()

Force the session to be saved and closed.

from NativeSessionStorage
clear()

Clear all session data in memory.

registerBag(SessionBagInterface $bag)

Registers a SessionBagInterface for use.

from NativeSessionStorage
SessionBagInterface getBag(string $name)

Gets a SessionBagInterface by name.

from NativeSessionStorage
setMetadataBag(MetadataBag $metaBag = null) from NativeSessionStorage
MetadataBag getMetadataBag()

Gets the MetadataBag.

from NativeSessionStorage
bool isStarted()

Checks if the session is started.

from NativeSessionStorage
setOptions(array $options)

Sets session.* ini variables.

from NativeSessionStorage
setSaveHandler(SessionHandlerInterface|null $saveHandler = null)

Registers session save handler as a PHP session handler.

from NativeSessionStorage
loadSession(array $session = null)

Load the session with attributes.

from NativeSessionStorage

Details

__construct(SessionHandlerInterface|null $handler = null, MetadataBag $metaBag = null)

Parameters

SessionHandlerInterface|null $handler
MetadataBag $metaBag MetadataBag

AbstractProxy|SessionHandlerInterface getSaveHandler()

Gets the save handler instance.

Return Value

AbstractProxy|SessionHandlerInterface

bool start()

Starts the session.

Return Value

bool True if started

Exceptions

RuntimeException if something goes wrong starting the session

string getId()

Returns the session ID.

Return Value

string The session ID or empty

setId(string $id)

Sets the session ID.

Parameters

string $id

mixed getName()

Returns the session name.

Return Value

mixed The session name

setName(string $name)

Sets the session name.

Parameters

string $name

bool regenerate(bool $destroy = false, int $lifetime = null)

Regenerates id that represents this storage.

This method must invoke session_regenerate_id($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 PHP's 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. Symfony's 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.

Parameters

bool $destroy Destroy session when regenerating?
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 regenerated, false if error

Exceptions

RuntimeException If an error occurs while regenerating this storage

save()

Force the session to be saved and closed.

This method must invoke session_write_close() 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 should actually persist the session data if required.

Exceptions

RuntimeException if the session is saved without being started, or if the session is already closed

clear()

Clear all session data in memory.

registerBag(SessionBagInterface $bag)

Registers a SessionBagInterface for use.

Parameters

SessionBagInterface $bag

SessionBagInterface getBag(string $name)

Gets a SessionBagInterface by name.

Parameters

string $name

Return Value

SessionBagInterface

Exceptions

InvalidArgumentException If the bag does not exist

setMetadataBag(MetadataBag $metaBag = null)

Parameters

MetadataBag $metaBag

MetadataBag getMetadataBag()

Gets the MetadataBag.

Return Value

MetadataBag

bool isStarted()

Checks if the session is started.

Return Value

bool True if started, false otherwise

setOptions(array $options)

Sets session.* ini variables.

For convenience we omit 'session.' from the beginning of the keys. Explicitly ignores other ini keys.

Parameters

array $options Session ini directives array(key => value)

See also

http://php.net/session.configuration

setSaveHandler(SessionHandlerInterface|null $saveHandler = null)

Registers session save handler as a PHP session handler.

To use internal PHP session save handlers, override this method using ini_set with session.save_handler and session.save_path e.g.

ini_set('session.save_handler', 'files');
ini_set('session.save_path', '/tmp');

or pass in a \SessionHandler instance which configures session.save_handler in the constructor, for a template see NativeFileSessionHandler or use handlers in composer package drak/native-session

Parameters

SessionHandlerInterface|null $saveHandler

Exceptions

InvalidArgumentException

See also

http://php.net/session-set-save-handler
http://php.net/sessionhandlerinterface
http://php.net/sessionhandler
http://github.com/drak/NativeSession

protected loadSession(array $session = null)

Load the session with attributes.

After starting the session, PHP retrieves the session from whatever handlers are set to (either PHP's internal, or a custom save handler set with session_set_save_handler()). PHP takes the return value from the read() handler, unserializes it and populates $_SESSION with the result automatically.

Parameters

array $session