FileCacheFactory.php

Same filename in other branches
  1. 8.9.x core/lib/Drupal/Component/FileCache/FileCacheFactory.php
  2. 10 core/lib/Drupal/Component/FileCache/FileCacheFactory.php
  3. 11.x core/lib/Drupal/Component/FileCache/FileCacheFactory.php

Namespace

Drupal\Component\FileCache

File

core/lib/Drupal/Component/FileCache/FileCacheFactory.php

View source
<?php

namespace Drupal\Component\FileCache;


/**
 * Creates a FileCache object.
 */
class FileCacheFactory {
    
    /**
     * The configuration key to disable FileCache completely.
     */
    const DISABLE_CACHE = 'file_cache_disable';
    
    /**
     * The configuration used to create FileCache objects.
     *
     * @var array
     */
    protected static $configuration;
    
    /**
     * The cache prefix.
     *
     * @var string
     */
    protected static $prefix;
    
    /**
     * Instantiates a FileCache object for a given collection identifier.
     *
     * @param string $collection
     *   The collection identifier for this FileCache.
     * @param array $default_configuration
     *   (optional) The default configuration for this FileCache collection. This
     *   can be used to e.g. specify default usage of a FileCache class.
     *
     * @return \Drupal\Component\FileCache\FileCacheInterface
     *   The initialized FileCache object.
     */
    public static function get($collection, $default_configuration = []) {
        // If there is a special key in the configuration, disable FileCache completely.
        if (!empty(static::$configuration[static::DISABLE_CACHE])) {
            return new NullFileCache('', '');
        }
        $configuration = [];
        // Check for a collection specific setting first.
        if (isset(static::$configuration[$collection])) {
            $configuration += static::$configuration[$collection];
        }
        // Then check if a default configuration has been provided.
        if (!empty($default_configuration)) {
            $configuration += $default_configuration;
        }
        // Last check if a default setting has been provided.
        if (isset(static::$configuration['default'])) {
            $configuration += static::$configuration['default'];
        }
        // Ensure that all properties are set.
        $fallback_configuration = [
            'class' => '\\Drupal\\Component\\FileCache\\FileCache',
            'collection' => $collection,
            'cache_backend_class' => NULL,
            'cache_backend_configuration' => [],
        ];
        $configuration = $configuration + $fallback_configuration;
        $class = $configuration['class'];
        return new $class(static::getPrefix(), $configuration['collection'], $configuration['cache_backend_class'], $configuration['cache_backend_configuration']);
    }
    
    /**
     * Gets the configuration used for constructing future file cache objects.
     *
     * @return array
     *   The configuration that is used.
     */
    public static function getConfiguration() {
        return static::$configuration;
    }
    
    /**
     * Sets the configuration to use for constructing future file cache objects.
     *
     * @param array $configuration
     *   The configuration to use.
     */
    public static function setConfiguration($configuration) {
        static::$configuration = $configuration;
    }
    
    /**
     * Returns the cache prefix.
     *
     * @return string
     *   The cache prefix.
     */
    public static function getPrefix() {
        return static::$prefix;
    }
    
    /**
     * Sets the cache prefix that should be used.
     *
     * Should be set to a secure, unique key to prevent cache pollution by a
     * third party.
     *
     * @param string $prefix
     *   The cache prefix.
     */
    public static function setPrefix($prefix) {
        static::$prefix = $prefix;
    }

}

Classes

Title Deprecated Summary
FileCacheFactory Creates a FileCache object.

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