class MockArraySessionStorage implements SessionStorageInterface
MockArraySessionStorage mocks the session for unit tests.
No PHP session is actually started since a session can be initialized and shutdown only once per PHP execution cycle.
When doing functional testing, you should use MockFileSessionStorage instead.
Methods
__construct(string $name = 'MOCKSESSID', MetadataBag $metaBag = null) Constructor. | ||
setSessionData(array $array) Sets the session data. | ||
bool | start() Starts the session. | |
bool | regenerate(bool $destroy = false, int $lifetime = null) Regenerates id that represents this storage. | |
string | getId() Returns the session ID. | |
setId(string $id) Sets the session ID. | ||
mixed | getName() Returns the session name. | |
setName(string $name) Sets the session name. | ||
save() Force the session to be saved and closed. | ||
clear() Clear all session data in memory. | ||
registerBag(SessionBagInterface $bag) Registers a SessionBagInterface for use. | ||
SessionBagInterface | getBag(string $name) Gets a SessionBagInterface by name. | |
bool | isStarted() Checks if the session is started. | |
setMetadataBag(MetadataBag $bag = null) Sets the MetadataBag. | ||
MetadataBag | getMetadataBag() Gets the MetadataBag. |
Details
__construct(string $name = 'MOCKSESSID', MetadataBag $metaBag = null)
Constructor.
setSessionData(array $array)
Sets the session data.
bool start()
Starts the session.
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 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.
string getId()
Returns the session ID.
setId(string $id)
Sets the session ID.
mixed getName()
Returns the session name.
setName(string $name)
Sets the session name.
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 should actually persist the session data if required.
clear()
Clear all session data in memory.
registerBag(SessionBagInterface $bag)
Registers a SessionBagInterface for use.
SessionBagInterface getBag(string $name)
Gets a SessionBagInterface by name.
bool isStarted()
Checks if the session is started.
setMetadataBag(MetadataBag $bag = null)
Sets the MetadataBag.
MetadataBag getMetadataBag()
Gets the MetadataBag.
Please login to continue.