![]() 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/app/bundles/CacheBundle/Cache/ |
<?php declare(strict_types=1); namespace Mautic\CacheBundle\Cache; use Mautic\CoreBundle\Helper\CoreParametersHelper; use Psr\Cache\CacheItemInterface; use Psr\Cache\InvalidArgumentException as Psr6CacheInterface; use Symfony\Component\Cache\Adapter\TagAwareAdapterInterface; use Symfony\Component\Cache\CacheItem; use Symfony\Component\Cache\Exception\InvalidArgumentException; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Povides caching mechanism using adapters, it provides both PSR-6 and PSR-16. */ final class CacheProvider implements CacheProviderInterface { private ?Psr16Cache $psr16 = null; public function __construct( private CoreParametersHelper $coreParametersHelper, private ContainerInterface $container ) { } public function getCacheAdapter(): TagAwareAdapterInterface { $selectedAdapter = $this->coreParametersHelper->get('cache_adapter'); if (!$selectedAdapter || !$this->container->has($selectedAdapter)) { throw new InvalidArgumentException('Requested cache adapter "'.$selectedAdapter.'" is not available'); } $adaptor = $this->container->get($selectedAdapter); if (!$adaptor instanceof TagAwareAdapterInterface) { throw new InvalidArgumentException(sprintf('Requested cache adapter "%s" is not a %s', $selectedAdapter, TagAwareAdapterInterface::class)); } return $adaptor; } public function getSimpleCache(): Psr16Cache { if (is_null($this->psr16)) { $this->psr16 = new Psr16Cache($this->getCacheAdapter()); } return $this->psr16; } /** * @param string $key * * @throws Psr6CacheInterface */ public function getItem($key): CacheItem { return $this->getCacheAdapter()->getItem($key); } /** * @return CacheItem[]|\Traversable * * @throws Psr6CacheInterface */ public function getItems(array $keys = []): \Traversable { return $this->getCacheAdapter()->getItems($keys); } /** * @param string $key * * @throws Psr6CacheInterface */ public function hasItem($key): bool { return $this->getCacheAdapter()->hasItem($key); } public function clear(string $prefix = ''): bool { return $this->getCacheAdapter()->clear($prefix); } public function deleteItem($key): bool { return $this->getCacheAdapter()->deleteItem($key); } /** * Removes multiple items from the pool. * * @param string[] $keys An array of keys that should be removed from the pool * * @return bool True if the items were successfully removed. False if there was an error. * * @throws Psr6CacheInterface If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException * MUST be thrown */ public function deleteItems(array $keys): bool { return $this->getCacheAdapter()->deleteItems($keys); } /** * Persists a cache item immediately. * * @param CacheItemInterface $item The cache item to save * * @return bool True if the item was successfully persisted. False if there was an error. */ public function save(CacheItemInterface $item): bool { return $this->getCacheAdapter()->save($item); } /** * Sets a cache item to be persisted later. * * @param CacheItemInterface $item The cache item to save * * @return bool False if the item could not be queued or if a commit was attempted and failed. True otherwise. */ public function saveDeferred(CacheItemInterface $item): bool { return $this->getCacheAdapter()->saveDeferred($item); } /** * Persists any deferred cache items. * * @return bool True if all not-yet-saved items were successfully saved or there were none. False otherwise. */ public function commit(): bool { return $this->getCacheAdapter()->commit(); } /** * Invalidates cached items using tags. * * @param string[] $tags An array of tags to invalidate * * @return bool True on success * * @throws Psr6CacheInterface When $tags is not valid */ public function invalidateTags(array $tags): bool { return $this->getCacheAdapter()->invalidateTags($tags); } }