function CacheableMetadata::merge
Same name in other branches
- 9 core/lib/Drupal/Core/Cache/CacheableMetadata.php \Drupal\Core\Cache\CacheableMetadata::merge()
- 8.9.x core/lib/Drupal/Core/Cache/CacheableMetadata.php \Drupal\Core\Cache\CacheableMetadata::merge()
- 11.x core/lib/Drupal/Core/Cache/CacheableMetadata.php \Drupal\Core\Cache\CacheableMetadata::merge()
Merges the values of another CacheableMetadata object with this one.
Parameters
\Drupal\Core\Cache\CacheableMetadata $other: The other CacheableMetadata object.
Return value
static A new CacheableMetadata object, with the merged data.
1 method overrides CacheableMetadata::merge()
- BubbleableMetadata::merge in core/
lib/ Drupal/ Core/ Render/ BubbleableMetadata.php - Creates a new bubbleable metadata object by merging this one with another.
File
-
core/
lib/ Drupal/ Core/ Cache/ CacheableMetadata.php, line 92
Class
- CacheableMetadata
- Defines a generic class for passing cacheability metadata.
Namespace
Drupal\Core\CacheCode
public function merge(CacheableMetadata $other) {
$result = clone $this;
// This is called many times per request, so avoid merging unless absolutely
// necessary.
if (empty($this->cacheContexts)) {
$result->cacheContexts = $other->cacheContexts;
}
elseif (empty($other->cacheContexts)) {
$result->cacheContexts = $this->cacheContexts;
}
else {
$result->cacheContexts = Cache::mergeContexts($this->cacheContexts, $other->cacheContexts);
}
if (empty($this->cacheTags)) {
$result->cacheTags = $other->cacheTags;
}
elseif (empty($other->cacheTags)) {
$result->cacheTags = $this->cacheTags;
}
else {
$result->cacheTags = Cache::mergeTags($this->cacheTags, $other->cacheTags);
}
if ($this->cacheMaxAge === Cache::PERMANENT) {
$result->cacheMaxAge = $other->cacheMaxAge;
}
elseif ($other->cacheMaxAge === Cache::PERMANENT) {
$result->cacheMaxAge = $this->cacheMaxAge;
}
else {
$result->cacheMaxAge = Cache::mergeMaxAges($this->cacheMaxAge, $other->cacheMaxAge);
}
return $result;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.