UseCacheBackendTrait.php

Same filename and directory in other branches
  1. 9 core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php
  2. 8.9.x core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php
  3. 10 core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php

Namespace

Drupal\Core\Cache

File

core/lib/Drupal/Core/Cache/UseCacheBackendTrait.php

View source
<?php

namespace Drupal\Core\Cache;


/**
 * Provides methods to use a cache backend while respecting a 'use caches' flag.
 */
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);
        }
    }

}

Traits

Title Deprecated Summary
UseCacheBackendTrait Provides methods to use a cache backend while respecting a 'use caches' flag.

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