W3cubDocs

/Drupal 8

public function AccessResult::inheritCacheability

public AccessResult::inheritCacheability(AccessResultInterface $other)

Inherits the cacheability of the other access result, if any.

inheritCacheability() differs from addCacheableDependency() in how it handles max-age, because it is designed to inherit the cacheability of the second operand in the andIf() and orIf() operations. There, the situation "allowed, max-age=0 OR allowed, max-age=1000" needs to yield max-age 1000 as the end result.

Parameters

\Drupal\Core\Access\AccessResultInterface $other: The other access result, whose cacheability (if any) to inherit.

Return value

$this

File

core/lib/Drupal/Core/Access/AccessResult.php, line 378

Class

AccessResult
Value object for passing an access result with cacheability metadata.

Namespace

Drupal\Core\Access

Code

public function inheritCacheability(AccessResultInterface $other) {
  $this->addCacheableDependency($other);
  if ($other instanceof CacheableDependencyInterface) {
    if ($this->getCacheMaxAge() !== 0 && $other->getCacheMaxAge() !== 0) {
      $this->setCacheMaxAge(Cache::mergeMaxAges($this->getCacheMaxAge(), $other->getCacheMaxAge()));
    }
    else {
      $this->setCacheMaxAge($other->getCacheMaxAge());
    }
  }
  return $this;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Access!AccessResult.php/function/AccessResult::inheritCacheability/8.1.x