fcbc11f8d1ecb83d58d2d54e6071a4a956a3c65e
[yaffs-website] / web / core / lib / Drupal / Core / Cache / RefinableCacheableDependencyTrait.php
1 <?php
2
3 namespace Drupal\Core\Cache;
4
5 /**
6  * Trait for \Drupal\Core\Cache\RefinableCacheableDependencyInterface.
7  */
8 trait RefinableCacheableDependencyTrait {
9
10   use CacheableDependencyTrait;
11
12   /**
13    * {@inheritdoc}
14    */
15   public function addCacheableDependency($other_object) {
16     if ($other_object instanceof CacheableDependencyInterface) {
17       $this->addCacheContexts($other_object->getCacheContexts());
18       $this->addCacheTags($other_object->getCacheTags());
19       $this->mergeCacheMaxAge($other_object->getCacheMaxAge());
20     }
21     else {
22       // Not a cacheable dependency, this can not be cached.
23       $this->cacheMaxAge = 0;
24     }
25     return $this;
26   }
27
28   /**
29    * {@inheritdoc}
30    */
31   public function addCacheContexts(array $cache_contexts) {
32     if ($cache_contexts) {
33       $this->cacheContexts = Cache::mergeContexts($this->cacheContexts, $cache_contexts);
34     }
35     return $this;
36   }
37
38   /**
39    * {@inheritdoc}
40    */
41   public function addCacheTags(array $cache_tags) {
42     if ($cache_tags) {
43       $this->cacheTags = Cache::mergeTags($this->cacheTags, $cache_tags);
44     }
45     return $this;
46   }
47
48   /**
49    * {@inheritdoc}
50    */
51   public function mergeCacheMaxAge($max_age) {
52     $this->cacheMaxAge = Cache::mergeMaxAges($this->cacheMaxAge, $max_age);
53     return $this;
54   }
55
56 }