mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-02 01:10:53 +00:00
6d34684c5a
69d3c92b00
[Php80] Add MixedTypeRector (#2701)
50 lines
1.2 KiB
PHP
50 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 $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();
|
|
}
|
|
/**
|
|
* @param mixed $data
|
|
*/
|
|
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 = [];
|
|
}
|
|
}
|