trait UseCacheBackendTrait

Same name in other branches
  1. 9 core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php \Drupal\Core\Cache\UseCacheBackendTrait
  2. 10 core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php \Drupal\Core\Cache\UseCacheBackendTrait
  3. 11.x core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php \Drupal\Core\Cache\UseCacheBackendTrait

Provides methods to use a cache backend while respecting a 'use caches' flag.

Hierarchy

7 files declare their use of UseCacheBackendTrait
DefaultPluginManager.php in core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
EntityDisplayRepository.php in core/lib/Drupal/Core/Entity/EntityDisplayRepository.php
EntityFieldManager.php in core/lib/Drupal/Core/Entity/EntityFieldManager.php
EntityTypeBundleInfo.php in core/lib/Drupal/Core/Entity/EntityTypeBundleInfo.php
ProviderRepository.php in core/modules/media/src/OEmbed/ProviderRepository.php

... See full list

File

core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php, line 8

Namespace

Drupal\Core\Cache
View source
trait UseCacheBackendTrait {
    
    /**
     * Cache backend instance.
     *
     * @var \Drupal\Core\Cache\CacheBackendInterface
     */
    protected $cacheBackend;
    
    /**
     * Flag whether caches should be used or skipped.
     *
     * @var bool
     */
    protected $useCaches = TRUE;
    
    /**
     * Fetches from the cache backend, respecting the use caches flag.
     *
     * @param string $cid
     *   The cache ID of the data to retrieve.
     *
     * @return object|false
     *   The cache item or FALSE on failure.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::get()
     */
    protected function cacheGet($cid) {
        if ($this->useCaches && $this->cacheBackend) {
            return $this->cacheBackend
                ->get($cid);
        }
        return FALSE;
    }
    
    /**
     * Stores data in the persistent cache, respecting the use caches flag.
     *
     * @param string $cid
     *   The cache ID of the data to store.
     * @param mixed $data
     *   The data to store in the cache.
     *   Some storage engines only allow objects up to a maximum of 1MB in size to
     *   be stored by default. When caching large arrays or similar, take care to
     *   ensure $data does not exceed this size.
     * @param int $expire
     *   One of the following values:
     *   - CacheBackendInterface::CACHE_PERMANENT: Indicates that the item should
     *     not be removed unless it is deleted explicitly.
     *   - A Unix timestamp: Indicates that the item will be considered invalid
     *     after this time, i.e. it will not be returned by get() unless
     *     $allow_invalid has been set to TRUE. When the item has expired, it may
     *     be permanently deleted by the garbage collector at any time.
     * @param array $tags
     *   An array of tags to be stored with the cache item. These should normally
     *   identify objects used to build the cache item, which should trigger
     *   cache invalidation when updated. For example if a cached item represents
     *   a node, both the node ID and the author's user ID might be passed in as
     *   tags. For example array('node' => array(123), 'user' => array(92)).
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::set()
     */
    protected function cacheSet($cid, $data, $expire = Cache::PERMANENT, array $tags = []) {
        if ($this->cacheBackend && $this->useCaches) {
            $this->cacheBackend
                ->set($cid, $data, $expire, $tags);
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary Overrides
UseCacheBackendTrait::$cacheBackend protected property Cache backend instance.
UseCacheBackendTrait::$useCaches protected property Flag whether caches should be used or skipped.
UseCacheBackendTrait::cacheGet protected function Fetches from the cache backend, respecting the use caches flag. 1
UseCacheBackendTrait::cacheSet protected function Stores data in the persistent cache, respecting the use caches flag.

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