%PDF- %PDF-
| Direktori : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-tokens/src/Cache/ |
| Current File : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-tokens/src/Cache/InMemoryCache.php |
<?php
declare(strict_types=1);
namespace Firebase\Auth\Token\Cache;
use DateInterval;
use DateTimeImmutable;
use Psr\SimpleCache\CacheInterface;
final class InMemoryCache implements CacheInterface
{
/**
* @var array
*/
private $items;
public function __construct(array $items = [])
{
$this->items = $items;
}
public function get($key, $default = null)
{
if ($item = $this->items[$key] ?? null) {
list($expiresAt, $value) = $item;
if (!$expiresAt || (new \DateTime() < $expiresAt)) {
return $value;
}
$this->delete($key);
}
return $default;
}
public function set($key, $value, $ttl = null)
{
$expires = null;
if (ctype_digit((string) $ttl)) {
$ttl = new DateInterval(sprintf('PT%dS', $ttl));
}
if ($ttl) {
$expires = (new DateTimeImmutable())->add($ttl);
}
$this->items[$key] = [$expires, $value];
return true;
}
public function delete($key)
{
unset($this->items[$key]);
return true;
}
public function clear()
{
$this->items = [];
return true;
}
public function getMultiple($keys, $default = null)
{
$result = [];
foreach ($keys as $key) {
$result[$key] = $this->get($key, $default);
}
return $result;
}
public function setMultiple($values, $ttl = null)
{
foreach ($values as $key => $value) {
$this->set($key, $value, $ttl);
}
return true;
}
public function deleteMultiple($keys)
{
foreach ($keys as $key) {
$this->delete($key);
}
return true;
}
public function has($key)
{
if ($item = $this->items[$key] ?? null) {
$expiresAt = $item[0];
if (!$expiresAt || (new \DateTime() < $expiresAt)) {
return true;
}
}
return false;
}
}