class MemoryCounterBackend

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Cache/MemoryCounterBackend.php \Drupal\Core\Cache\MemoryCounterBackend
  2. 8.9.x core/lib/Drupal/Core/Cache/MemoryCounterBackend.php \Drupal\Core\Cache\MemoryCounterBackend
  3. 10 core/lib/Drupal/Core/Cache/MemoryCounterBackend.php \Drupal\Core\Cache\MemoryCounterBackend

Defines a memory cache implementation that counts set and get calls.

This can be used to mock a cache backend where one needs to know how many times a cache entry was set or requested.

@todo On the longrun this backend should be replaced by phpunit mock objects.

Hierarchy

Expanded class hierarchy of MemoryCounterBackend

1 file declares its use of MemoryCounterBackend
AliasTest.php in core/modules/path_alias/tests/src/Kernel/AliasTest.php

File

core/lib/Drupal/Core/Cache/MemoryCounterBackend.php, line 13

Namespace

Drupal\Core\Cache
View source
class MemoryCounterBackend extends MemoryBackend {
    
    /**
     * Stores a list of cache cid calls keyed by function name.
     *
     * @var array
     */
    protected $counter = [];
    
    /**
     * {@inheritdoc}
     */
    public function get($cid, $allow_invalid = FALSE) {
        $this->increaseCounter(__FUNCTION__, $cid);
        return parent::get($cid, $allow_invalid);
    }
    
    /**
     * {@inheritdoc}
     */
    public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = []) {
        $this->increaseCounter(__FUNCTION__, $cid);
        parent::set($cid, $data, $expire, $tags);
    }
    
    /**
     * {@inheritdoc}
     */
    public function delete($cid) {
        $this->increaseCounter(__FUNCTION__, $cid);
        parent::delete($cid);
    }
    
    /**
     * Increase the counter for a function with a certain cid.
     *
     * @param string $function
     *   The called function.
     * @param string $cid
     *   The cache ID of the cache entry to increase the counter.
     */
    protected function increaseCounter($function, $cid) {
        if (!isset($this->counter[$function][$cid])) {
            $this->counter[$function][$cid] = 1;
        }
        else {
            $this->counter[$function][$cid]++;
        }
    }
    
    /**
     * Returns the call counter for the get, set and delete methods.
     *
     * @param string $method
     *   (optional) The name of the method to return the call counter for.
     * @param string $cid
     *   (optional) The name of the cache id to return the call counter for.
     *
     * @return int|array
     *   An integer if both method and cid is given, an array otherwise.
     */
    public function getCounter($method = NULL, $cid = NULL) {
        if ($method && $cid) {
            return $this->counter[$method][$cid] ?? 0;
        }
        elseif ($method) {
            return $this->counter[$method] ?? [];
        }
        else {
            return $this->counter;
        }
    }
    
    /**
     * Resets the call counter.
     */
    public function resetCounter() {
        $this->counter = [];
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
CacheBackendInterface::CACHE_PERMANENT constant Indicates that the item should never be removed unless explicitly deleted.
MemoryBackend::$cache protected property Array to store cache objects.
MemoryBackend::deleteAll public function Deletes all cache items in a bin. Overrides CacheBackendInterface::deleteAll
MemoryBackend::deleteMultiple public function Deletes multiple items from the cache. Overrides CacheBackendInterface::deleteMultiple
MemoryBackend::garbageCollection public function Performs garbage collection on a cache bin. Overrides CacheBackendInterface::garbageCollection
MemoryBackend::getMultiple public function Returns data from the persistent cache when given an array of cache IDs. Overrides CacheBackendInterface::getMultiple
MemoryBackend::invalidate public function Marks a cache item as invalid. Overrides CacheBackendInterface::invalidate
MemoryBackend::invalidateAll public function Marks all cache items as invalid. Overrides CacheBackendInterface::invalidateAll
MemoryBackend::invalidateMultiple public function Marks cache items as invalid. Overrides CacheBackendInterface::invalidateMultiple
MemoryBackend::invalidateTags public function Marks cache items with any of the specified tags as invalid. Overrides CacheTagsInvalidatorInterface::invalidateTags
MemoryBackend::prepareItem protected function Prepares a cached item. 1
MemoryBackend::removeBin public function Remove a cache bin. Overrides CacheBackendInterface::removeBin
MemoryBackend::reset public function Reset statically cached variables.
MemoryBackend::setMultiple public function Store multiple items in the persistent cache. Overrides CacheBackendInterface::setMultiple
MemoryBackend::__construct public function Constructs a MemoryBackend object.
MemoryBackend::__sleep public function Prevents data stored in memory backends from being serialized.
MemoryCounterBackend::$counter protected property Stores a list of cache cid calls keyed by function name.
MemoryCounterBackend::delete public function Deletes an item from the cache. Overrides MemoryBackend::delete
MemoryCounterBackend::get public function Returns data from the persistent cache. Overrides MemoryBackend::get
MemoryCounterBackend::getCounter public function Returns the call counter for the get, set and delete methods.
MemoryCounterBackend::increaseCounter protected function Increase the counter for a function with a certain cid.
MemoryCounterBackend::resetCounter public function Resets the call counter.
MemoryCounterBackend::set public function Stores data in the persistent cache. Overrides MemoryBackend::set

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.