Session.php
Same filename in other branches
Namespace
Drupal\Core\StackMiddlewareFile
-
core/
lib/ Drupal/ Core/ StackMiddleware/ Session.php
View source
<?php
namespace Drupal\Core\StackMiddleware;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;
/**
* Wrap session logic around a HTTP request.
*
* Note, the session service is not injected into this class in order to prevent
* premature initialization of session storage (database). Instead the session
* service is retrieved from the container only when handling the request.
*/
class Session implements HttpKernelInterface {
use ContainerAwareTrait;
/**
* The wrapped HTTP kernel.
*
* @var \Symfony\Component\HttpKernel\HttpKernelInterface
*/
protected $httpKernel;
/**
* The session service name.
*
* @var string
*/
protected $sessionServiceName;
/**
* Constructs a Session stack middleware object.
*
* @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
* The decorated kernel.
* @param string $service_name
* The name of the session service, defaults to "session".
*/
public function __construct(HttpKernelInterface $http_kernel, $service_name = 'session') {
$this->httpKernel = $http_kernel;
$this->sessionServiceName = $service_name;
}
/**
* {@inheritdoc}
*/
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
if ($type === self::MASTER_REQUEST && PHP_SAPI !== 'cli') {
$session = $this->container
->get($this->sessionServiceName);
$session->start();
$request->setSession($session);
}
$result = $this->httpKernel
->handle($request, $type, $catch);
if ($type === self::MASTER_REQUEST && $request->hasSession()) {
$request->getSession()
->save();
}
return $result;
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
Session | Wrap session logic around a HTTP request. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.