geno/wp-content/plugins/mailpoet/lib/Doctrine/PSRArrayCache.php

92 lines
1.8 KiB
PHP
Raw Normal View History

2024-02-01 17:24:18 +05:30
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Doctrine;
if (!defined('ABSPATH')) exit;
use MailPoetVendor\Psr\Cache\CacheItemInterface;
use MailPoetVendor\Psr\Cache\CacheItemPoolInterface;
class PSRArrayCache implements CacheItemPoolInterface {
/** @var mixed[] */
private $cache = [];
/**
* @inheritDoc
*/
public function getItem($key) {
if (!is_string($key)) {
throw new PSRCacheInvalidArgumentException('Invalid key');
}
if (!$this->hasItem($key)) {
return new PSRCacheItem($key, false);
}
return new PSRCacheItem($key, $this->cache[$key]);
}
public function getItems(array $keys = []) {
return array_map([$this, 'getItem'], $keys);
}
/**
* @inheritDoc
*/
public function hasItem($key) {
return array_key_exists($key, $this->cache);
}
/**
* @inheritDoc
*/
public function clear() {
$this->cache = [];
return true;
}
/**
* @inheritDoc
*/
public function deleteItem($key) {
if (!is_string($key)) {
throw new PSRCacheInvalidArgumentException('Invalid key');
}
unset($this->cache[$key]);
return true;
}
/**
* @inheritDoc
*/
public function deleteItems(array $keys) {
try {
array_map([$this, 'deleteItem'], $keys);
} catch (PSRCacheInvalidArgumentException $e) {
return false;
}
return true;
}
/**
* @inheritDoc
*/
public function save(CacheItemInterface $item) {
$this->cache[$item->getKey()] = $item->get();
return true;
}
/**
* @inheritDoc
*/
public function saveDeferred(CacheItemInterface $item) {
return $this->save($item);
}
/**
* @inheritDoc
*/
public function commit() {
return true;
}
}