comparison core/lib/Drupal/Component/FileCache/FileCacheFactory.php @ 0:4c8ae668cc8c

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