annotate core/lib/Drupal/Component/FileCache/FileCacheFactory.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Component\FileCache;
Chris@0 4
Chris@0 5 /**
Chris@0 6 * Creates a FileCache object.
Chris@0 7 */
Chris@0 8 class FileCacheFactory {
Chris@0 9
Chris@0 10 /**
Chris@0 11 * The configuration key to disable FileCache completely.
Chris@0 12 */
Chris@0 13 const DISABLE_CACHE = 'file_cache_disable';
Chris@0 14
Chris@0 15 /**
Chris@0 16 * The configuration used to create FileCache objects.
Chris@0 17 *
Chris@0 18 * @var array
Chris@0 19 */
Chris@0 20 protected static $configuration;
Chris@0 21
Chris@0 22 /**
Chris@0 23 * The cache prefix.
Chris@0 24 *
Chris@0 25 * @var string
Chris@0 26 */
Chris@0 27 protected static $prefix;
Chris@0 28
Chris@0 29 /**
Chris@0 30 * Instantiates a FileCache object for a given collection identifier.
Chris@0 31 *
Chris@0 32 * @param string $collection
Chris@0 33 * The collection identifier for this FileCache.
Chris@0 34 * @param array $default_configuration
Chris@0 35 * (optional) The default configuration for this FileCache collection. This
Chris@0 36 * can be used to e.g. specify default usage of a FileCache class.
Chris@0 37 *
Chris@0 38 * @return \Drupal\Component\FileCache\FileCacheInterface
Chris@0 39 * The initialized FileCache object.
Chris@0 40 */
Chris@0 41 public static function get($collection, $default_configuration = []) {
Chris@0 42 // If there is a special key in the configuration, disable FileCache completely.
Chris@0 43 if (!empty(static::$configuration[static::DISABLE_CACHE])) {
Chris@0 44 return new NullFileCache('', '');
Chris@0 45 }
Chris@0 46
Chris@0 47 $configuration = [];
Chris@0 48
Chris@0 49 // Check for a collection specific setting first.
Chris@0 50 if (isset(static::$configuration[$collection])) {
Chris@0 51 $configuration += static::$configuration[$collection];
Chris@0 52 }
Chris@0 53 // Then check if a default configuration has been provided.
Chris@0 54 if (!empty($default_configuration)) {
Chris@0 55 $configuration += $default_configuration;
Chris@0 56 }
Chris@0 57 // Last check if a default setting has been provided.
Chris@0 58 if (isset(static::$configuration['default'])) {
Chris@0 59 $configuration += static::$configuration['default'];
Chris@0 60 }
Chris@0 61
Chris@0 62 // Ensure that all properties are set.
Chris@0 63 $fallback_configuration = [
Chris@0 64 'class' => '\Drupal\Component\FileCache\FileCache',
Chris@0 65 'collection' => $collection,
Chris@0 66 'cache_backend_class' => NULL,
Chris@0 67 'cache_backend_configuration' => [],
Chris@0 68 ];
Chris@0 69
Chris@0 70 $configuration = $configuration + $fallback_configuration;
Chris@0 71
Chris@0 72 $class = $configuration['class'];
Chris@0 73 return new $class(static::getPrefix(), $configuration['collection'], $configuration['cache_backend_class'], $configuration['cache_backend_configuration']);
Chris@0 74 }
Chris@0 75
Chris@0 76 /**
Chris@0 77 * Gets the configuration used for constructing future file cache objects.
Chris@0 78 *
Chris@0 79 * @return array
Chris@0 80 * The configuration that is used.
Chris@0 81 */
Chris@0 82 public static function getConfiguration() {
Chris@0 83 return static::$configuration;
Chris@0 84 }
Chris@0 85
Chris@0 86 /**
Chris@0 87 * Sets the configuration to use for constructing future file cache objects.
Chris@0 88 *
Chris@0 89 * @param array $configuration
Chris@0 90 * The configuration to use.
Chris@0 91 */
Chris@0 92 public static function setConfiguration($configuration) {
Chris@0 93 static::$configuration = $configuration;
Chris@0 94 }
Chris@0 95
Chris@0 96 /**
Chris@0 97 * Returns the cache prefix.
Chris@0 98 *
Chris@0 99 * @return string
Chris@0 100 * The cache prefix.
Chris@0 101 */
Chris@0 102 public static function getPrefix() {
Chris@0 103 return static::$prefix;
Chris@0 104 }
Chris@0 105
Chris@0 106 /**
Chris@0 107 * Sets the cache prefix that should be used.
Chris@0 108 *
Chris@0 109 * Should be set to a secure, unique key to prevent cache pollution by a
Chris@0 110 * third party.
Chris@0 111 *
Chris@0 112 * @param string $prefix
Chris@0 113 * The cache prefix.
Chris@0 114 */
Chris@0 115 public static function setPrefix($prefix) {
Chris@0 116 static::$prefix = $prefix;
Chris@0 117 }
Chris@0 118
Chris@0 119 }