3 namespace Drupal\webprofiler\Cache;
5 use Drupal\Core\Cache\CacheFactoryInterface;
6 use Drupal\webprofiler\DataCollector\CacheDataCollector;
7 use Symfony\Component\DependencyInjection\ContainerAwareInterface;
8 use Symfony\Component\DependencyInjection\ContainerAwareTrait;
11 * Wraps a cache factory to register all calls to the cache system.
13 class CacheFactoryWrapper implements CacheFactoryInterface, ContainerAwareInterface {
15 use ContainerAwareTrait;
20 * @var \Drupal\Core\Cache\CacheFactoryInterface
22 protected $cacheFactory;
25 * The cache data collector.
27 * @var \Drupal\webprofiler\DataCollector\CacheDataCollector
29 protected $cacheDataCollector;
32 * All wrapped cache backends.
34 * @var \Drupal\webprofiler\Cache\CacheBackendWrapper[]
36 protected $cacheBackends = [];
39 * Creates a new CacheFactoryWrapper instance.
41 * @param \Drupal\Core\Cache\CacheFactoryInterface $cache_factory
43 * @param \Drupal\webprofiler\DataCollector\CacheDataCollector $cacheDataCollector
44 * The cache data collector.
46 public function __construct(CacheFactoryInterface $cache_factory, CacheDataCollector $cacheDataCollector) {
47 $this->cacheFactory = $cache_factory;
48 $this->cacheDataCollector = $cacheDataCollector;
54 public function get($bin) {
55 if (!isset($this->cacheBackends[$bin])) {
56 $cache_backend = $this->cacheFactory->get($bin);
57 $this->cacheBackends[$bin] = new CacheBackendWrapper($this->cacheDataCollector, $cache_backend, $bin);
59 return $this->cacheBackends[$bin];