equip/session is an optional library for using sessions in Equip applications.

The benefit of using session objects instead of a global variable is primarily in testing, where the session object can be mocked and operations verified. Using session objects also makes it much easier to switch to a distributed session storage as your application scales.


To use the native session implementation the configuration must be enabled in the application bootstrap:

    // ...
// ...

Basic Example

namespace Acme\Domain;

use Equip\SessionInterface;
use Equip\Adr\DomainInterface;

class WidgetDomain implements DomainInterface
     * @var SessionInterface
    private $session;

    public function __construct(
        SessionInterface $session
    ) {
        $this->session = $session;

    public function __invoke(array $input)
        // Do things with $this->session, etc...


The session object can be modified using methods or with array operations:

// Set a value using object methods:
$session->set('foo', 'bar');
// Or using array operations:
$session['foo'] = 'bar';

// Get a value:
$foo = $session->get('foo');
// Or:
$foo = $session['foo'];

// Check for a value:
if ($session->has('foo')) { /* ... */ }
// Or:
if (isset($session['foo'])) { /* ... */ }

// Delete a value
// Or:

The entire session can also be cleared at any time: