Event Plugins

The default implementation of the Session interface is NativeSession. This class has a second argument in its constructor which accepts an array of objects which extend the abstract Plugin class.

These plugins get notified when certain events occur. There are three concrete (but empty) methods in the Plugin class.

  • onStart
  • onRegenerate
  • onDestroy

Provided Plugins

We've shipped two plugins that you can use out of the box.

Cross-site Request Forgery Token

The CsrfPlugin is responsible for generating a CSRF token for use in an application's form submissions. You can retrieve the token to add to forms, and you can also test if a submitted token matches the generated one.

$csrf = new \Caridea\Session\CsrfPlugin();
$session = new \Caridea\Session\NativeSession($_COOKIE, [$csrf]);

$token = $csrf->getValue();

if ($csrf->isValid($someToken)) {
    // valid CSRF token
}

Flash Messages

The FlashPlugin is responsible for storing and retrieving one-time notifications to display to the user. It has the concept of current messages, which should be displayed to the user on this request, as well as next messages, which should be displayed to the user on the next request.

$flash = new \Caridea\Session\FlashPlugin();
$session = new \Caridea\Session\NativeSession($_COOKIE, [$flash]);

$bar = $flash->getCurrent('foo', 'the default');

foreach ($flash->getAllCurrent() as $name => $value) {
    echo "$name = $value", PHP_EOL;
}

$flash->set('foo', 'baz'); // this gets set in the "next" set
echo $flash->getNext('foo', 'buzz'); // baz

$flash->set('foo', 'nothing', true); // this gets set in both "current" and "next"
echo $flash->getNext('foo', 'buzz'); // nothing
echo $flash->getCurrent('foo', 'buzz'); // nothing

$flash->clear(); // this clears the "next" set
$flash->clear(true); // this clears both "current" and "next"

$flash->keep(); // this copies all values in "current" to the "next" set

As soon as the session resumes, the next set replaces the current set, and the next set is cleared.