$id
$id : string
MockFileSessionStorage is used to mock sessions for functional testing when done in a single PHP process.
No PHP session is actually started since a session can be initialized and shutdown only once per PHP execution cycle and this class does not pollute any session related globals, including session_() functions or session. PHP ini directives.
$metadataBag : \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag
$bags : array|array<mixed,\Symfony\Component\HttpFoundation\Session\SessionBagInterface>
__construct(string $savePath = null, string $name = 'MOCKSESSID', \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag $metaBag = null)
string | $savePath | Path of directory to save session files |
string | $name | Session name |
\Symfony\Component\HttpFoundation\Session\Storage\MetadataBag | $metaBag | MetadataBag instance |
regenerate(boolean $destroy = false, integer $lifetime = null) : boolean
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.
boolean | $destroy | Destroy session when regenerating? |
integer | $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. |
True if session regenerated, false if error
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.
registerBag(\Symfony\Component\HttpFoundation\Session\SessionBagInterface $bag)
Registers a SessionBagInterface for use.
\Symfony\Component\HttpFoundation\Session\SessionBagInterface | $bag |
getBag(string $name) : \Symfony\Component\HttpFoundation\Session\SessionBagInterface
Gets a SessionBagInterface by name.
string | $name |
setMetadataBag(\Symfony\Component\HttpFoundation\Session\Storage\MetadataBag $bag = null)
\Symfony\Component\HttpFoundation\Session\Storage\MetadataBag | $bag |
getMetadataBag() : \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag
Gets the MetadataBag.