class StrictSessionHandler
Adds basic `SessionUpdateTimestampHandlerInterface` behaviors to another `SessionHandlerInterface`.
@author Nicolas Grekas <p@tchwork.com>
Hierarchy
- class \Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler implements \Symfony\Component\HttpFoundation\Session\Storage\Handler\SessionHandlerInterface, \Symfony\Component\HttpFoundation\Session\Storage\Handler\SessionUpdateTimestampHandlerInterface
- class \Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandler extends \Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler
Expanded class hierarchy of StrictSessionHandler
2 files declare their use of StrictSessionHandler
- NativeSessionStorage.php in vendor/
symfony/ http-foundation/ Session/ Storage/ NativeSessionStorage.php - SessionHandlerProxy.php in vendor/
symfony/ http-foundation/ Session/ Storage/ Proxy/ SessionHandlerProxy.php
File
-
vendor/
symfony/ http-foundation/ Session/ Storage/ Handler/ StrictSessionHandler.php, line 19
Namespace
Symfony\Component\HttpFoundation\Session\Storage\HandlerView source
class StrictSessionHandler extends AbstractSessionHandler {
private bool $doDestroy;
public function __construct(\SessionHandlerInterface $handler) {
if ($handler instanceof \SessionUpdateTimestampHandlerInterface) {
throw new \LogicException(\sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', get_debug_type($handler), self::class));
}
}
/**
* Returns true if this handler wraps an internal PHP session save handler using \SessionHandler.
*
* @internal
*/
public function isWrapper() : bool {
return $this->handler instanceof \SessionHandler;
}
public function open(string $savePath, string $sessionName) : bool {
parent::open($savePath, $sessionName);
return $this->handler
->open($savePath, $sessionName);
}
protected function doRead(string $sessionId) : string {
return $this->handler
->read($sessionId);
}
public function updateTimestamp(string $sessionId, string $data) : bool {
return $this->write($sessionId, $data);
}
protected function doWrite(string $sessionId, string $data) : bool {
return $this->handler
->write($sessionId, $data);
}
public function destroy(string $sessionId) : bool {
$this->doDestroy = true;
$destroyed = parent::destroy($sessionId);
return $this->doDestroy ? $this->doDestroy($sessionId) : $destroyed;
}
protected function doDestroy(string $sessionId) : bool {
$this->doDestroy = false;
return $this->handler
->destroy($sessionId);
}
public function close() : bool {
return $this->handler
->close();
}
public function gc(int $maxlifetime) : int|false {
return $this->handler
->gc($maxlifetime);
}
}