Provide PSR array cache and switch annotation reader to it
The annotation reader was using CachedReader which has been deprecated so we need to switch to PsrCachedReader Since 2.0 doctrine/cache no longer provides implementations of caches so I also needed to implement a simple PSR array cache. [MAILPOET-3892]
This commit is contained in:
committed by
Veljko V
parent
503283fa63
commit
86e938b46e
88
lib/Doctrine/PSRArrayCache.php
Normal file
88
lib/Doctrine/PSRArrayCache.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Doctrine;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user