Mercurial > hg > cmmr2012-drupal-site
diff vendor/symfony/validator/Mapping/Cache/Psr6Cache.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | 12f9dff5fda9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/symfony/validator/Mapping/Cache/Psr6Cache.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,75 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Validator\Mapping\Cache; + +use Psr\Cache\CacheItemPoolInterface; +use Symfony\Component\Validator\Mapping\ClassMetadata; + +/** + * PSR-6 adapter. + * + * @author Kévin Dunglas <dunglas@gmail.com> + */ +class Psr6Cache implements CacheInterface +{ + private $cacheItemPool; + + public function __construct(CacheItemPoolInterface $cacheItemPool) + { + $this->cacheItemPool = $cacheItemPool; + } + + /** + * {@inheritdoc} + */ + public function has($class) + { + return $this->cacheItemPool->hasItem($this->escapeClassName($class)); + } + + /** + * {@inheritdoc} + */ + public function read($class) + { + $item = $this->cacheItemPool->getItem($this->escapeClassName($class)); + + if (!$item->isHit()) { + return false; + } + + return $item->get(); + } + + /** + * {@inheritdoc} + */ + public function write(ClassMetadata $metadata) + { + $item = $this->cacheItemPool->getItem($this->escapeClassName($metadata->getClassName())); + $item->set($metadata); + + $this->cacheItemPool->save($item); + } + + /** + * Replaces backslashes by dots in a class name. + * + * @param string $class + * + * @return string + */ + private function escapeClassName($class) + { + return str_replace('\\', '.', $class); + } +}