/** * {@inheritdoc} */ public function findAll() { $all = array(); $files = $this->findFiles(); $file_cache = FileCacheFactory::get('yaml_discovery:' . $this->fileCacheKeySuffix); // Try to load from the file cache first. foreach ($file_cache->getMultiple(array_keys($files)) as $file => $data) { $all[$files[$file]][$this->getIdentifier($file, $data)] = $data; unset($files[$file]); } // If there are files left that were not returned from the cache, load and // parse them now. This list was flipped above and is keyed by filename. if ($files) { foreach ($files as $file => $provider) { // If a file is empty or its contents are commented out, return an empty // array instead of NULL for type consistency. try { $data = Yaml::decode(file_get_contents($file)) ?: []; } catch (InvalidDataTypeException $e) { throw new DiscoveryException("The {$file} contains invalid YAML", 0, $e); } $data[static::FILE_KEY] = $file; $all[$provider][$this->getIdentifier($file, $data)] = $data; $file_cache->set($file, $data); } } return $all; }
/** * Constructs a new instance. * * @param string[] $plugin_namespaces * (optional) An array of namespace that may contain plugin implementations. * Defaults to an empty array. * @param string $plugin_definition_annotation_name * (optional) The name of the annotation that contains the plugin definition. * Defaults to 'Drupal\Component\Annotation\Plugin'. * @param string[] $annotation_namespaces * (optional) Additional namespaces to be scanned for annotation classes. */ function __construct($plugin_namespaces = array(), $plugin_definition_annotation_name = 'Drupal\\Component\\Annotation\\Plugin', array $annotation_namespaces = []) { $this->pluginNamespaces = $plugin_namespaces; $this->pluginDefinitionAnnotationName = $plugin_definition_annotation_name; $this->annotationNamespaces = $annotation_namespaces; $file_cache_suffix = str_replace('\\', '_', $plugin_definition_annotation_name); $file_cache_suffix .= ':' . hash('crc32b', serialize($annotation_namespaces)); $this->fileCache = FileCacheFactory::get('annotation_discovery:' . $file_cache_suffix); }
/** * Constructs a new FileStorage. * * @param string $directory * A directory path to use for reading and writing of configuration files. * @param string $collection * (optional) The collection to store configuration in. Defaults to the * default collection. */ public function __construct($directory, $collection = StorageInterface::DEFAULT_COLLECTION) { $this->directory = $directory; $this->collection = $collection; // Use a NULL File Cache backend by default. This will ensure only the // internal statc caching of FileCache is used and thus avoids blowing up // the APCu cache. $this->fileCache = FileCacheFactory::get('config', ['cache_backend_class' => NULL]); }
/** * {@inheritdoc} */ public function findAll() { $all = array(); $files = $this->findFiles(); $provider_by_files = array_flip($files); $file_cache = FileCacheFactory::get('yaml_discovery:' . $this->name); // Try to load from the file cache first. foreach ($file_cache->getMultiple($files) as $file => $data) { $all[$provider_by_files[$file]] = $data; unset($provider_by_files[$file]); } // If there are files left that were not returned from the cache, load and // parse them now. This list was flipped above and is keyed by filename. if ($provider_by_files) { foreach ($provider_by_files as $file => $provider) { // If a file is empty or its contents are commented out, return an empty // array instead of NULL for type consistency. $all[$provider] = Yaml::decode(file_get_contents($file)) ?: []; $file_cache->set($file, $all[$provider]); } } return $all; }
/** * Changes parameters in the services.yml file. * * @param $name * The name of the parameter. * @param $value * The value of the parameter. */ protected function setContainerParameter($name, $value) { $filename = $this->siteDirectory . '/services.yml'; chmod($filename, 0666); $services = Yaml::decode(file_get_contents($filename)); $services['parameters'][$name] = $value; file_put_contents($filename, Yaml::encode($services)); // Ensure that the cache is deleted for the yaml file loader. $file_cache = FileCacheFactory::get('container_yaml_loader'); $file_cache->delete($filename); }
/** * Constructs a new ExtensionDiscovery object. * * @param string $root * The app root. * @param bool $use_file_cache * Whether file cache should be used. * @param string[] $profile_directories * The available profile directories * @param string $site_path * The path to the site. */ public function __construct($root, $use_file_cache = TRUE, $profile_directories = NULL, $site_path = NULL) { $this->root = $root; $this->fileCache = $use_file_cache ? FileCacheFactory::get('extension_discovery') : NULL; $this->profileDirectories = $profile_directories; $this->sitePath = $site_path; }
/** * Constructs a new ExtensionDiscovery object. * * @param string $root * The app root. */ public function __construct($root) { $this->root = $root; $this->fileCache = FileCacheFactory::get('extension_discovery'); }
public function __construct(ContainerBuilder $container) { $this->container = $container; $this->fileCache = FileCacheFactory::get('container_yaml_loader'); }
/** * @covers ::get * * @expectedException \InvalidArgumentException * @expectedExceptionMessage Required prefix configuration is missing */ public function testGetNoPrefix() { FileCacheFactory::setPrefix(NULL); FileCacheFactory::get('test_foo_settings', []); }
/** * @covers ::get * * @dataProvider configurationDataProvider */ public function testGetConfigurationOverrides($configuration, $arguments, $class) { FileCacheFactory::setConfiguration($configuration); $file_cache = FileCacheFactory::get('test_foo_settings', $arguments); $this->assertInstanceOf($class, $file_cache); }