![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/jms/metadata/src/Cache/ |
<?php declare(strict_types=1); namespace Metadata\Cache; use Metadata\ClassMetadata; use Psr\Cache\CacheItemPoolInterface; class PsrCacheAdapter implements CacheInterface, ClearableCacheInterface { /** * @var string */ private $prefix; /** * @var CacheItemPoolInterface */ private $pool; /** * @var CacheItemPoolInterface */ private $lastItem; public function __construct(string $prefix, CacheItemPoolInterface $pool) { $this->prefix = $prefix; $this->pool = $pool; } public function load(string $class): ?ClassMetadata { $this->lastItem = $this->pool->getItem($this->sanitizeCacheKey($this->prefix . $class)); return $this->lastItem->get(); } public function put(ClassMetadata $metadata): void { $key = $this->sanitizeCacheKey($this->prefix . $metadata->name); if (null === $this->lastItem || $this->lastItem->getKey() !== $key) { $this->lastItem = $this->pool->getItem($key); } $this->pool->save($this->lastItem->set($metadata)); } public function evict(string $class): void { $this->pool->deleteItem($this->sanitizeCacheKey($this->prefix . $class)); } public function clear(): bool { return $this->pool->clear(); } /** * If anonymous class is to be cached, it contains invalid path characters that need to be removed/replaced * Example of anonymous class name: class@anonymous\x00/app/src/Controller/DefaultController.php0x7f82a7e026ec */ private function sanitizeCacheKey(string $key): string { return str_replace(['\\', "\0", '@', '/', '$', '{', '}', ':'], '-', $key); } }