Skip to content
Snippets Groups Projects

Convert SessionManager to use a closure.

Files
2
@@ -3,8 +3,9 @@
namespace Drupal\Core\Session;
use Drupal\Component\Datetime\TimeInterface;
use Drupal\Core\Database\Connection;
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\DependencyInjection\Attribute\AutowireServiceClosure;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
@@ -37,13 +38,6 @@ class SessionManager extends NativeSessionStorage implements SessionManagerInter
*/
protected $requestStack;
/**
* The database connection to use.
*
* @var \Drupal\Core\Database\Connection
*/
protected $connection;
/**
* The session configuration.
*
@@ -73,8 +67,8 @@ class SessionManager extends NativeSessionStorage implements SessionManagerInter
*
* @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
* The request stack.
* @param \Drupal\Core\Database\Connection $connection
* The database connection.
* @param \Closure $connectionClosure
* A closure that wraps the database connection service.
* @param \Drupal\Core\Session\MetadataBag $metadata_bag
* The session metadata bag.
* @param \Drupal\Core\Session\SessionConfigurationInterface $session_configuration
@@ -88,16 +82,18 @@ class SessionManager extends NativeSessionStorage implements SessionManagerInter
*/
public function __construct(
RequestStack $request_stack,
Connection $connection,
#[AutowireServiceClosure('database')]
protected \Closure $connectionClosure,
MetadataBag $metadata_bag,
SessionConfigurationInterface $session_configuration,
#[Autowire(service: 'datetime.time')]
protected TimeInterface|AbstractProxy|\SessionHandlerInterface|null $time = NULL,
#[Autowire(service: 'session_handler')]
$handler = NULL,
) {
$options = [];
$this->sessionConfiguration = $session_configuration;
$this->requestStack = $request_stack;
$this->connection = $connection;
if (!$time || $time instanceof AbstractProxy || $time instanceof \SessionHandlerInterface) {
@trigger_error('Calling ' . __METHOD__ . '() without the $time argument is deprecated in drupal:10.3.0 and it will be the 5th argument in drupal:11.0.0. See https://www.drupal.org/node/3387233', E_USER_DEPRECATED);
if ($time instanceof AbstractProxy || $time instanceof \SessionHandlerInterface) {
@@ -234,7 +230,9 @@ public function delete($uid) {
if (!$this->writeSafeHandler->isSessionWritable() || $this->isCli()) {
return;
}
$this->connection->delete('sessions')
/** @var \Drupal\Core\Database\Connection $connection */
$connection = ($this->connectionClosure)();
$connection->delete('sessions')
->condition('uid', $uid)
->execute();
}
Loading