public function CachedStorage::readMultiple in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/Config/CachedStorage.php \Drupal\Core\Config\CachedStorage::readMultiple()
Reads configuration data from the storage.
Parameters
array $names: List of names of the configuration objects to load.
Return value
array A list of the configuration data stored for the configuration object name that could be loaded for the passed list of names.
Overrides StorageInterface::readMultiple
File
- core/
lib/ Drupal/ Core/ Config/ CachedStorage.php, line 87 - Contains \Drupal\Core\Config\CachedStorage.
Class
- CachedStorage
- Defines the cached storage.
Namespace
Drupal\Core\ConfigCode
public function readMultiple(array $names) {
$data_to_return = array();
$cache_keys_map = $this
->getCacheKeys($names);
$cache_keys = array_values($cache_keys_map);
$cached_list = $this->cache
->getMultiple($cache_keys);
if (!empty($cache_keys)) {
// $cache_keys_map contains the full $name => $cache_key map, while
// $cache_keys contains just the $cache_key values that weren't found in
// the cache.
// @see \Drupal\Core\Cache\CacheBackendInterface::getMultiple()
$names_to_get = array_keys(array_intersect($cache_keys_map, $cache_keys));
$list = $this->storage
->readMultiple($names_to_get);
// Cache configuration objects that were loaded from the storage, cache
// missing configuration objects as an explicit FALSE.
$items = array();
foreach ($names_to_get as $name) {
$data = isset($list[$name]) ? $list[$name] : FALSE;
$data_to_return[$name] = $data;
$items[$cache_keys_map[$name]] = array(
'data' => $data,
);
}
$this->cache
->setMultiple($items);
}
// Add the configuration objects from the cache to the list.
$cache_keys_inverse_map = array_flip($cache_keys_map);
foreach ($cached_list as $cache_key => $cache) {
$name = $cache_keys_inverse_map[$cache_key];
$data_to_return[$name] = $cache->data;
}
// Ensure that only existing configuration objects are returned, filter out
// cached information about missing objects.
return array_filter($data_to_return);
}