mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-03 09:50:49 +00:00
56 lines
1.2 KiB
PHP
56 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Rector\Caching\ValueObject\Storage;
|
|
|
|
use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
|
|
use Rector\Caching\ValueObject\CacheItem;
|
|
|
|
/**
|
|
* inspired by https://github.com/phpstan/phpstan-src/blob/560652088406d7461c2c4ad4897784e33f8ab312/src/Cache/MemoryCacheStorage.php
|
|
*/
|
|
final class MemoryCacheStorage implements CacheStorageInterface
|
|
{
|
|
/**
|
|
* @var array<string, CacheItem>
|
|
*/
|
|
private array $storage = [];
|
|
|
|
/**
|
|
* @return null|mixed
|
|
*/
|
|
public function load(string $key, string $variableKey)
|
|
{
|
|
if (! isset($this->storage[$key])) {
|
|
return null;
|
|
}
|
|
|
|
$item = $this->storage[$key];
|
|
if (! $item->isVariableKeyValid($variableKey)) {
|
|
return null;
|
|
}
|
|
|
|
return $item->getData();
|
|
}
|
|
|
|
public function save(string $key, string $variableKey, $data): void
|
|
{
|
|
$this->storage[$key] = new CacheItem($variableKey, $data);
|
|
}
|
|
|
|
public function clean(string $key): void
|
|
{
|
|
if (! isset($this->storage[$key])) {
|
|
return;
|
|
}
|
|
|
|
unset($this->storage[$key]);
|
|
}
|
|
|
|
public function clear(): void
|
|
{
|
|
$this->storage = [];
|
|
}
|
|
}
|