%PDF- %PDF-
Direktori : /home/graphicd/public_html/vebto/vendor/kreait/firebase-tokens/src/JWT/Cache/ |
Current File : /home/graphicd/public_html/vebto/vendor/kreait/firebase-tokens/src/JWT/Cache/InMemoryCache.php |
<?php declare(strict_types=1); namespace Kreait\Firebase\JWT\Cache; use DateInterval; use Kreait\Clock; use Kreait\Clock\SystemClock; use Psr\SimpleCache\CacheInterface; final class InMemoryCache implements CacheInterface { /** @var array<string, mixed> */ private $items = []; /** @var Clock */ private $clock; private function __construct() { $this->clock = new SystemClock(); } public static function createEmpty(): self { return new self(); } public function withClock(Clock $clock): self { $cache = new self(); $cache->clock = $clock; return $cache; } public function get($key, $default = null) { $now = $this->clock->now(); if ($item = $this->items[$key] ?? null) { list($expiresAt, $value) = $item; if (!$expiresAt || $expiresAt > $now) { return $value; } $this->delete($key); } return $default; } public function set($key, $value, $ttl = null): bool { $now = $this->clock->now(); $expires = null; if ($ttl instanceof DateInterval) { $expires = $now->add($ttl); } if (\is_int($ttl) && $ttl > 0) { $expires = $now->modify("+{$ttl} seconds"); } if (!$expires) { $this->delete($key); return true; } $this->items[$key] = [$expires, $value]; return true; } public function delete($key): bool { unset($this->items[$key]); return true; } public function clear(): bool { $this->items = []; return true; } /** * @param iterable<string> $keys * @param mixed $default * * @return array<string, mixed> */ public function getMultiple($keys, $default = null) { $result = []; foreach ($keys as $key) { $result[$key] = $this->get($key, $default); } return $result; } /** * @param iterable<mixed> $values * @param int|DateInterval|null $ttl */ public function setMultiple($values, $ttl = null): bool { foreach ($values as $key => $value) { $this->set($key, $value, $ttl); } return true; } /** * @param iterable<string> $keys */ public function deleteMultiple($keys): bool { foreach ($keys as $key) { $this->delete($key); } return true; } public function has($key): bool { $now = $this->clock->now(); if ($item = $this->items[$key] ?? null) { $expiresAt = $item[0]; if ($now < $expiresAt) { return true; } } return false; } }