mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-12 23:14:18 +01:00
88 lines
2.0 KiB
PHP
88 lines
2.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Pelago\Emogrifier\Caching;
|
|
|
|
/**
|
|
* This cache caches string values with string keys. It is not PSR-6-compliant.
|
|
*
|
|
* Usage:
|
|
*
|
|
* ```php
|
|
* $cache = new SimpleStringCache();
|
|
* $cache->set($key, $value);
|
|
* …
|
|
* if ($cache->has($key) {
|
|
* $cachedValue = $cache->get($value);
|
|
* }
|
|
* ```
|
|
*
|
|
* @internal
|
|
*/
|
|
class SimpleStringCache
|
|
{
|
|
/**
|
|
* @var array<string, string>
|
|
*/
|
|
private $values = [];
|
|
|
|
/**
|
|
* Checks whether there is an entry stored for the given key.
|
|
*
|
|
* @param string $key the key to check; must not be empty
|
|
*
|
|
* @throws \InvalidArgumentException
|
|
*/
|
|
public function has(string $key): bool
|
|
{
|
|
$this->assertNotEmptyKey($key);
|
|
|
|
return isset($this->values[$key]);
|
|
}
|
|
|
|
/**
|
|
* Returns the entry stored for the given key, and throws an exception if the value does not exist
|
|
* (which helps keep the return type simple).
|
|
*
|
|
* @param string $key the key to of the item to retrieve; must not be empty
|
|
*
|
|
* @return string the retrieved value; may be empty
|
|
*
|
|
* @throws \BadMethodCallException
|
|
*/
|
|
public function get(string $key): string
|
|
{
|
|
if (!$this->has($key)) {
|
|
throw new \BadMethodCallException('You can only call `get` with a key for an existing value.', 1625996246);
|
|
}
|
|
|
|
return $this->values[$key];
|
|
}
|
|
|
|
/**
|
|
* Sets or overwrites an entry.
|
|
*
|
|
* @param string $key the key to of the item to set; must not be empty
|
|
* @param string $value the value to set; can be empty
|
|
*
|
|
* @throws \BadMethodCallException
|
|
*/
|
|
public function set(string $key, string $value): void
|
|
{
|
|
$this->assertNotEmptyKey($key);
|
|
|
|
$this->values[$key] = $value;
|
|
}
|
|
|
|
/**
|
|
* @throws \InvalidArgumentException
|
|
*/
|
|
private function assertNotEmptyKey(string $key): void
|
|
{
|
|
if ($key === '') {
|
|
throw new \InvalidArgumentException('Please provide a non-empty key.', 1625995840);
|
|
}
|
|
}
|
|
}
|