You are here

public function BackendChain::get in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Cache/BackendChain.php \Drupal\Core\Cache\BackendChain::get()

Returns data from the persistent cache.

Parameters

string $cid: The cache ID of the data to retrieve.

bool $allow_invalid: (optional) If TRUE, a cache item may be returned even if it is expired or has been invalidated. Such items may sometimes be preferred, if the alternative is recalculating the value stored in the cache, especially if another concurrent request is already recalculating the same value. The "valid" property of the returned object indicates whether the item is valid or not. Defaults to FALSE.

Return value

object|false The cache item or FALSE on failure.

Overrides CacheBackendInterface::get

See also

\Drupal\Core\Cache\CacheBackendInterface::getMultiple()

File

core/lib/Drupal/Core/Cache/BackendChain.php, line 65

Class

BackendChain
Defines a chained cache implementation for combining multiple cache backends.

Namespace

Drupal\Core\Cache

Code

public function get($cid, $allow_invalid = FALSE) {
  foreach ($this->backends as $index => $backend) {
    if (($return = $backend
      ->get($cid, $allow_invalid)) !== FALSE) {

      // We found a result, propagate it to all missed backends.
      if ($index > 0) {
        for ($i = $index - 1; 0 <= $i; --$i) {
          $this->backends[$i]
            ->set($cid, $return->data, $return->expire, $return->tags);
        }
      }
      return $return;
    }
  }
  return FALSE;
}