class MockFileSessionStorage extends MockArraySessionStorage

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.

Methods

__construct(string $savePath = null, 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.

getBag(string $name)

Gets a SessionBagInterface by name.

bool
isStarted()

Checks if the session is started.

setMetadataBag(MetadataBag $bag = null)

Sets the MetadataBag.

getMetadataBag()

Gets the MetadataBag.

Details

at line line 39
__construct(string $savePath = null, string $name = 'MOCKSESSID', MetadataBag $metaBag = null)

Constructor.

Parameters

string $savePath Path of directory to save session files.
string $name Session name
MetadataBag $metaBag MetadataBag instance.

in MockArraySessionStorage at line line 82
setSessionData(array $array)

Sets the session data.

Parameters

array $array

at line line 57
bool start()

Starts the session.

Return Value

bool True if started.

Exceptions

RuntimeException If something goes wrong starting the session.

at line line 77
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.

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

in MockArraySessionStorage at line line 123
string getId()

Returns the session ID.

Return Value

string The session ID or empty.

in MockArraySessionStorage at line line 131
setId(string $id)

Sets the session ID.

Parameters

string $id

in MockArraySessionStorage at line line 143
mixed getName()

Returns the session name.

Return Value

mixed The session name.

in MockArraySessionStorage at line line 151
setName(string $name)

Sets the session name.

Parameters

string $name

at line line 93
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.

Exceptions

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

in MockArraySessionStorage at line line 172
clear()

Clear all session data in memory.

in MockArraySessionStorage at line line 189
registerBag(SessionBagInterface $bag)

Registers a SessionBagInterface for use.

Parameters

SessionBagInterface $bag

in MockArraySessionStorage at line line 197
SessionBagInterface getBag(string $name)

Gets a SessionBagInterface by name.

Parameters

string $name

Return Value

SessionBagInterface

Exceptions

InvalidArgumentException If the bag does not exist

in MockArraySessionStorage at line line 213
bool isStarted()

Checks if the session is started.

Return Value

bool True if started, false otherwise.

in MockArraySessionStorage at line line 223
setMetadataBag(MetadataBag $bag = null)

Sets the MetadataBag.

Parameters

MetadataBag $bag

in MockArraySessionStorage at line line 237
MetadataBag getMetadataBag()

Gets the MetadataBag.

Return Value

MetadataBag