function CachedStorage::readMultiple

Same name in other branches
  1. 9 core/lib/Drupal/Core/Config/CachedStorage.php \Drupal\Core\Config\CachedStorage::readMultiple()
  2. 8.9.x core/lib/Drupal/Core/Config/CachedStorage.php \Drupal\Core\Config\CachedStorage::readMultiple()
  3. 11.x core/lib/Drupal/Core/Config/CachedStorage.php \Drupal\Core\Config\CachedStorage::readMultiple()

Overrides StorageInterface::readMultiple

File

core/lib/Drupal/Core/Config/CachedStorage.php, line 82

Class

CachedStorage
Defines the cached storage.

Namespace

Drupal\Core\Config

Code

public function readMultiple(array $names) {
    $data_to_return = [];
    $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 = [];
        foreach ($names_to_get as $name) {
            $data = $list[$name] ?? FALSE;
            $data_to_return[$name] = $data;
            $items[$cache_keys_map[$name]] = [
                '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);
}

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