class Cache

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

Helper methods for cache.

Hierarchy

  • class \Drupal\Core\Cache\Cache

Expanded class hierarchy of Cache

Related topics

214 files declare their use of Cache
AccessResult.php in core/lib/Drupal/Core/Access/AccessResult.php
AccessResultTest.php in core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
AccessRoleTest.php in core/modules/user/tests/src/Functional/Views/AccessRoleTest.php
AliasPathProcessorTest.php in core/modules/path_alias/tests/src/Unit/PathProcessor/AliasPathProcessorTest.php
AnnounceTestHttpClientMiddleware.php in core/modules/announcements_feed/tests/modules/announce_feed_test/src/AnnounceTestHttpClientMiddleware.php

... See full list

58 string references to 'Cache'
AssertViewsCacheTagsTrait::assertViewsCacheTags in core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php
Asserts a view's result & render cache items' cache tags.
CacheFactory::get in core/lib/Drupal/Core/Cache/CacheFactory.php
Instantiates a cache backend class for a given cache bin.
CacheTagTest::testTagCaching in core/modules/views/tests/src/Functional/Plugin/CacheTagTest.php
Tests the tag cache plugin.
CacheTest::testCacheData in core/modules/views/tests/src/Kernel/Plugin/CacheTest.php
Tests the data contained in cached items.
CacheTest::testHeaderStorage in core/modules/views/tests/src/Kernel/Plugin/CacheTest.php
Tests css/js storage and restoring mechanism.

... See full list

File

core/lib/Drupal/Core/Cache/Cache.php, line 12

Namespace

Drupal\Core\Cache
View source
class Cache {
    
    /**
     * Indicates that the item should never be removed unless explicitly deleted.
     */
    const PERMANENT = CacheBackendInterface::CACHE_PERMANENT;
    
    /**
     * Merges lists of cache contexts and removes duplicates.
     *
     * @param list<string> ...
     *   Cache contexts to merge.
     *
     * @return list<string>
     *   The merged list of cache contexts.
     */
    public static function mergeContexts(array ...$cache_contexts) {
        $cache_contexts = array_values(array_unique(array_merge(...$cache_contexts)));
        assert(\Drupal::service('cache_contexts_manager')->assertValidTokens($cache_contexts), sprintf('Failed to assert that "%s" are valid cache contexts.', implode(', ', $cache_contexts)));
        return $cache_contexts;
    }
    
    /**
     * Merges lists of cache tags and removes duplicates.
     *
     * The cache tags list is returned in a format that is valid for
     * \Drupal\Core\Cache\CacheBackendInterface::set().
     *
     * When caching elements, it is necessary to collect all cache tags into a
     * single list, from both the element itself and all child elements. This
     * allows items to be invalidated based on all tags attached to the content
     * they're constituted from.
     *
     * @param list<string> ...
     *   Cache tags to merge.
     *
     * @return list<string>
     *   The merged list of cache tags.
     */
    public static function mergeTags(array ...$cache_tags) {
        $cache_tags = array_values(array_unique(array_merge(...$cache_tags)));
        assert(Inspector::assertAllStrings($cache_tags), 'Cache tags must be valid strings');
        return $cache_tags;
    }
    
    /**
     * Merges max-age values (expressed in seconds), finds the lowest max-age.
     *
     * Ensures infinite max-age (Cache::PERMANENT) is taken into account.
     *
     * @param int ...
     *   Max age values to merge.
     *
     * @return int
     *   The minimum max-age value.
     */
    public static function mergeMaxAges(...$max_ages) {
        // Remove Cache::PERMANENT values to return the correct minimum value.
        $max_ages = array_filter($max_ages, function ($max_age) {
            return $max_age !== Cache::PERMANENT;
        });
        // If there are no max ages left return Cache::PERMANENT, otherwise return
        // the minimum value.
        return empty($max_ages) ? Cache::PERMANENT : min($max_ages);
    }
    
    /**
     * Build a list of cache tags from a given prefix and an array of suffixes.
     *
     * Each suffix will be converted to a cache tag by appending it to the prefix,
     * with a colon between them.
     *
     * @param string $prefix
     *   A prefix string.
     * @param array $suffixes
     *   An array of suffixes. Will be cast to strings.
     * @param string $glue
     *   A string to be used as glue for concatenation. Defaults to a colon.
     *
     * @return list<string>
     *   A list of cache tags.
     */
    public static function buildTags($prefix, array $suffixes, $glue = ':') {
        $tags = [];
        foreach ($suffixes as $suffix) {
            $tags[] = $prefix . $glue . $suffix;
        }
        return $tags;
    }
    
    /**
     * Marks cache items from all bins with any of the specified tags as invalid.
     *
     * @param string[] $tags
     *   The list of tags to invalidate cache items for.
     */
    public static function invalidateTags(array $tags) {
        \Drupal::service('cache_tags.invalidator')->invalidateTags($tags);
    }
    
    /**
     * Gets all cache bin services.
     *
     * @return \Drupal\Core\Cache\CacheBackendInterface[]
     *   An array of cache backend objects keyed by cache bins.
     */
    public static function getBins() {
        $bins = [];
        $container = \Drupal::getContainer();
        foreach ($container->getParameter('cache_bins') as $service_id => $bin) {
            $bins[$bin] = $container->get($service_id);
        }
        return $bins;
    }
    
    /**
     * Gets all memory cache bin services.
     *
     * @return \Drupal\Core\Cache\CacheBackendInterface[]
     *   An array of cache backend objects keyed by memory cache bins.
     */
    public static function getMemoryBins() : array {
        $bins = [];
        $container = \Drupal::getContainer();
        foreach ($container->getParameter('memory_cache_bins') as $service_id => $bin) {
            $bins[$bin] = $container->get($service_id);
        }
        return $bins;
    }

}

Members

Title Sort descending Modifiers Object type Summary
Cache::buildTags public static function Build a list of cache tags from a given prefix and an array of suffixes.
Cache::getBins public static function Gets all cache bin services.
Cache::getMemoryBins public static function Gets all memory cache bin services.
Cache::invalidateTags public static function Marks cache items from all bins with any of the specified tags as invalid.
Cache::mergeContexts public static function Merges lists of cache contexts and removes duplicates.
Cache::mergeMaxAges public static function Merges max-age values (expressed in seconds), finds the lowest max-age.
Cache::mergeTags public static function Merges lists of cache tags and removes duplicates.
Cache::PERMANENT constant Indicates that the item should never be removed unless explicitly deleted.

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