Current File : /var/www/prestashop/modules/ps_metrics/vendor/friendsofphp/php-cs-fixer/src/Cache/Cache.php |
<?php
declare (strict_types=1);
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace ps_metrics_module_v4_0_6\PhpCsFixer\Cache;
/**
* @author Andreas Möller <am@localheinz.com>
*
* @internal
*/
final class Cache implements CacheInterface
{
/**
* @var SignatureInterface
*/
private $signature;
/**
* @var array<string, int>
*/
private $hashes = [];
public function __construct(SignatureInterface $signature)
{
$this->signature = $signature;
}
public function getSignature() : SignatureInterface
{
return $this->signature;
}
public function has(string $file) : bool
{
return \array_key_exists($file, $this->hashes);
}
public function get(string $file) : ?int
{
if (!$this->has($file)) {
return null;
}
return $this->hashes[$file];
}
public function set(string $file, int $hash) : void
{
$this->hashes[$file] = $hash;
}
public function clear(string $file) : void
{
unset($this->hashes[$file]);
}
public function toJson() : string
{
$json = \json_encode(['php' => $this->getSignature()->getPhpVersion(), 'version' => $this->getSignature()->getFixerVersion(), 'indent' => $this->getSignature()->getIndent(), 'lineEnding' => $this->getSignature()->getLineEnding(), 'rules' => $this->getSignature()->getRules(), 'hashes' => $this->hashes]);
if (\JSON_ERROR_NONE !== \json_last_error()) {
throw new \UnexpectedValueException(\sprintf('Cannot encode cache signature to JSON, error: "%s". If you have non-UTF8 chars in your signature, like in license for `header_comment`, consider enabling `ext-mbstring` or install `symfony/polyfill-mbstring`.', \json_last_error_msg()));
}
return $json;
}
/**
* @throws \InvalidArgumentException
*
* @return Cache
*/
public static function fromJson(string $json) : self
{
$data = \json_decode($json, \true);
if (null === $data && \JSON_ERROR_NONE !== \json_last_error()) {
throw new \InvalidArgumentException(\sprintf('Value needs to be a valid JSON string, got "%s", error: "%s".', $json, \json_last_error_msg()));
}
$requiredKeys = ['php', 'version', 'indent', 'lineEnding', 'rules', 'hashes'];
$missingKeys = \array_diff_key(\array_flip($requiredKeys), $data);
if (\count($missingKeys) > 0) {
throw new \InvalidArgumentException(\sprintf('JSON data is missing keys "%s"', \implode('", "', $missingKeys)));
}
$signature = new Signature($data['php'], $data['version'], $data['indent'], $data['lineEnding'], $data['rules']);
$cache = new self($signature);
$cache->hashes = $data['hashes'];
return $cache;
}
}