On this page
Session Storage
laminas-session comes with a standard set of storage handlers. Storage handlers are
the intermediary between when the session starts and when the session writes and
closes. The default session storage is
Laminas\Session\Storage\SessionArrayStorage
.
Array Storage
Laminas\Session\Storage\ArrayStorage
provides a facility to store all information
in an ArrayObject
. This storage method is likely incompatible with 3rd party
libraries and all properties will be inaccessible through the $_SESSION
superglobal. Additionally ArrayStorage
will not automatically repopulate the
storage container in the case of each new request and would have to manually be
re-populated.
Basic Usage
use Laminas\Session\Storage\ArrayStorage;
use Laminas\Session\SessionManager;
$populateStorage = ['foo' => 'bar'];
$storage = new ArrayStorage($populateStorage);
$manager = new SessionManager();
$manager->setStorage($storage);
Session Storage
Laminas\Session\Storage\SessionStorage
replaces $_SESSION,
providing a facility
to store all information in an ArrayObject
. This means that it may not be
compatible with 3rd party libraries, although information stored in the
$_SESSION
superglobal should be available in other scopes.
Basic Usage
use Laminas\Session\Storage\SessionStorage;
use Laminas\Session\SessionManager;
$manager = new SessionManager();
$manager->setStorage(new SessionStorage());
Session Array Storage
Laminas\Session\Storage\SessionArrayStorage
provides a facility to store all
information directly in the $_SESSION
superglobal. This storage class provides
the most compatibility with 3rd party libraries and allows for directly storing
information into $_SESSION
.
Basic Usage
use Laminas\Session\Storage\SessionArrayStorage;
use Laminas\Session\SessionManager;
$manager = new SessionManager();
$manager->setStorage(new SessionArrayStorage());
Custom Storage
To create a custom storage container, you must implement
Laminas\Session\Storage\StorageInterface
. This interface extends each of
ArrayAccess
, Traversable
, Serializable
, and Countable
, and it is in the
methods those define that the majority of implementation occurs. The following
methods must also be implemented:
public function getRequestAccessTime() : int;
public function lock(int|string $key = null) : void;
public function isLocked(int|string $key = null) : bool;
public function unlock(int|string $key = null) : void;
public function markImmutable() : void;
public function isImmutable() : bool;
public function setMetadata(string $key, mixed $value, bool $overwriteArray = false) : void;
public function getMetadata(string $key = null) : mixed;
public function clear(int|string $key = null) : void;
public function fromArray(array $array) : void;
public function toArray(bool $metaData = false) : array;