. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Session; use const PHP_SESSION_NONE; /** * Do not use directly. Require the Session interface instead. * * @internal */ class DefaultSession implements Session { public function __construct( ?string $cacheLimiter = null, ?int $cacheExpire = null, ) { if (session_status() === PHP_SESSION_NONE) { if ($cacheLimiter !== null) { session_cache_limiter($cacheLimiter); } if ($cacheExpire !== null) { session_cache_expire($cacheExpire); } session_start(); } } public function get(string $key): mixed { return $_SESSION[$key] ?? null; } public function set(string $key, mixed $value): Session { $_SESSION[$key] = $value; return $this; } public function clear(string $key): void { unset($_SESSION[$key]); } public function clearAll(): void { session_unset(); } public function has(string $key): bool { return array_key_exists($key, $_SESSION); } }