* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Cache\Simple; use Psr\Cache\CacheItemPoolInterface; use Psr\Cache\CacheException as Psr6CacheException; use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\CacheException as SimpleCacheException; use Symfony\Component\Cache\Adapter\AbstractAdapter; use Symfony\Component\Cache\CacheItem; use Symfony\Component\Cache\Exception\InvalidArgumentException; use Symfony\Component\Cache\PruneableInterface; use Symfony\Component\Cache\ResettableInterface; use Symfony\Component\Cache\Traits\ProxyTrait; /** * @author Nicolas Grekas */ class Psr6Cache implements CacheInterface, PruneableInterface, ResettableInterface { use ProxyTrait; private $createCacheItem; public function __construct(CacheItemPoolInterface $pool) { $this->pool = $pool; if ($pool instanceof AbstractAdapter) { $this->createCacheItem = \Closure::bind( function ($key, $value, $allowInt = false) { if ($allowInt && \is_int($key)) { $key = (string) $key; } else { CacheItem::validateKey($key); } $f = $this->createCacheItem; return $f($key, $value, false); }, $pool, AbstractAdapter::class ); } } /** * {@inheritdoc} */ public function get($key, $default = null) { try { $item = $this->pool->getItem($key); } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } return $item->isHit() ? $item->get() : $default; } /** * {@inheritdoc} */ public function set($key, $value, $ttl = null) { try { if (null !== $f = $this->createCacheItem) { $item = $f($key, $value); } else { $item = $this->pool->getItem($key)->set($value); } } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } if (null !== $ttl) { $item->expiresAfter($ttl); } return $this->pool->save($item); } /** * {@inheritdoc} */ public function delete($key) { try { return $this->pool->deleteItem($key); } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } } /** * {@inheritdoc} */ public function clear() { return $this->pool->clear(); } /** * {@inheritdoc} */ public function getMultiple($keys, $default = null) { if ($keys instanceof \Traversable) { $keys = iterator_to_array($keys, false); } elseif (!\is_array($keys)) { throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given', is_object($keys) ? get_class($keys) : gettype($keys))); } try { $items = $this->pool->getItems($keys); } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } $values = array(); foreach ($items as $key => $item) { $values[$key] = $item->isHit() ? $item->get() : $default; } return $values; } /** * {@inheritdoc} */ public function setMultiple($values, $ttl = null) { $valuesIsArray = \is_array($values); if (!$valuesIsArray && !$values instanceof \Traversable) { throw new InvalidArgumentException(sprintf('Cache values must be array or Traversable, "%s" given', is_object($values) ? get_class($values) : gettype($values))); } $items = array(); try { if (null !== $f = $this->createCacheItem) { $valuesIsArray = false; foreach ($values as $key => $value) { $items[$key] = $f($key, $value, true); } } elseif ($valuesIsArray) { $items = array(); foreach ($values as $key => $value) { $items[] = (string) $key; } $items = $this->pool->getItems($items); } else { foreach ($values as $key => $value) { if (\is_int($key)) { $key = (string) $key; } $items[$key] = $this->pool->getItem($key)->set($value); } } } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } $ok = true; foreach ($items as $key => $item) { if ($valuesIsArray) { $item->set($values[$key]); } if (null !== $ttl) { $item->expiresAfter($ttl); } $ok = $this->pool->saveDeferred($item) && $ok; } return $this->pool->commit() && $ok; } /** * {@inheritdoc} */ public function deleteMultiple($keys) { if ($keys instanceof \Traversable) { $keys = iterator_to_array($keys, false); } elseif (!\is_array($keys)) { throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given', is_object($keys) ? get_class($keys) : gettype($keys))); } try { return $this->pool->deleteItems($keys); } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } } /** * {@inheritdoc} */ public function has($key) { try { return $this->pool->hasItem($key); } catch (SimpleCacheException $e) { throw $e; } catch (Psr6CacheException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } } } __halt_compiler();----SIGNATURE:----fp6GyrFXXHxxxGuwUr9EkRTbnNgCSX89Jg1ZEd/tfiqu8bjD5V/oIygAubnYZPjVbKpqRzE3MAJXCMjHQZR62C/OGuMdAUAVnOPyhrmkT4oXjOe3SW0RoHuAKHubzAo70B2XFuy87l4gFSmkvTypSunosqgTDaWljQ8PwkuLDkiTZjXhi7Ajwqu8yQq3oI0aRJ9clB9WLfjgfmVDe8nQkwTjDO5QiD7qttyGZgWlhxJs1ZRLwsVtVjRGBTuKbfi9kGVXz2ANgcdnhIg8JLnkZUx7zJmQD0/3uWN6rBYmmpoqkTCsG1IGV5hZgV0XLV1Hbif8lIlaGIulY1frWSTOg8fofzTynkLR3D2r2nyD3GQNMDlPWghqD2L9whBYtlRk88Rg1589kesWFeSeGmQ3fJW/bDUjXuUketTo4EnoN69KBRVG/N+fY8C9OeKOGShXlBjLg0acTNssOm1EMCXdr8HF9v8/+5uI7wet4HIsG0YyYzDXLA7PI6WXhvjig734i5gSLJECfVd09G9krzqcezRWbrPl2dUfhPHf25V6S9LCYWFaizhUWFwSHh4bVX4fL10N5Qrf3byk2H42+LR/Lhn41rYg92v9ygQaDnmgtgpwVlSgHQPw7rjpfohll350V6ALaK2e98Vzdst9AnA6aotnEecoZIuKF0sJpdaKwNw=----ATTACHMENT:----NjE5Mzg5MzM1NDIxMjcyMCA1Njk4MjMwNTg0NDcyNTczIDYyMTY1MjY2MjE1NTE0MTE=