class ChainResponsePolicy

Same name in this branch
  1. 11.x core/lib/Drupal/Core/ProxyClass/PageCache/ChainResponsePolicy.php \Drupal\Core\ProxyClass\PageCache\ChainResponsePolicy
Same name in other branches
  1. 9 core/lib/Drupal/Core/ProxyClass/PageCache/ChainResponsePolicy.php \Drupal\Core\ProxyClass\PageCache\ChainResponsePolicy
  2. 9 core/lib/Drupal/Core/PageCache/ChainResponsePolicy.php \Drupal\Core\PageCache\ChainResponsePolicy
  3. 8.9.x core/lib/Drupal/Core/ProxyClass/PageCache/ChainResponsePolicy.php \Drupal\Core\ProxyClass\PageCache\ChainResponsePolicy
  4. 8.9.x core/lib/Drupal/Core/PageCache/ChainResponsePolicy.php \Drupal\Core\PageCache\ChainResponsePolicy
  5. 10 core/lib/Drupal/Core/ProxyClass/PageCache/ChainResponsePolicy.php \Drupal\Core\ProxyClass\PageCache\ChainResponsePolicy
  6. 10 core/lib/Drupal/Core/PageCache/ChainResponsePolicy.php \Drupal\Core\PageCache\ChainResponsePolicy

Implements a compound response policy.

When evaluating the compound policy, all of the contained rules are applied to the response. The overall result is computed according to the following rules:

<ol> <li>Returns static::DENY if any of the rules evaluated to static::DENY</li> <li>Otherwise returns NULL</li> </ol>

Hierarchy

Expanded class hierarchy of ChainResponsePolicy

1 file declares its use of ChainResponsePolicy
ChainResponsePolicyTest.php in core/tests/Drupal/Tests/Core/PageCache/ChainResponsePolicyTest.php
1 string reference to 'ChainResponsePolicy'
dynamic_page_cache.services.yml in core/modules/dynamic_page_cache/dynamic_page_cache.services.yml
core/modules/dynamic_page_cache/dynamic_page_cache.services.yml
1 service uses ChainResponsePolicy
dynamic_page_cache_response_policy in core/modules/dynamic_page_cache/dynamic_page_cache.services.yml
Drupal\Core\PageCache\ChainResponsePolicy

File

core/lib/Drupal/Core/PageCache/ChainResponsePolicy.php, line 20

Namespace

Drupal\Core\PageCache
View source
class ChainResponsePolicy implements ChainResponsePolicyInterface {
    
    /**
     * A list of policy rules to apply when this policy is checked.
     *
     * @var \Drupal\Core\PageCache\ResponsePolicyInterface[]
     */
    protected $rules = [];
    
    /**
     * {@inheritdoc}
     */
    public function check(Response $response, Request $request) {
        foreach ($this->rules as $rule) {
            $result = $rule->check($response, $request);
            if ($result === static::DENY) {
                return $result;
            }
            elseif (isset($result)) {
                throw new \UnexpectedValueException('Return value of ResponsePolicyInterface::check() must be one of ResponsePolicyInterface::DENY or NULL');
            }
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function addPolicy(ResponsePolicyInterface $policy) {
        $this->rules[] = $policy;
        return $this;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
ChainResponsePolicy::$rules protected property A list of policy rules to apply when this policy is checked.
ChainResponsePolicy::addPolicy public function Add a policy to the list of policy rules. Overrides ChainResponsePolicyInterface::addPolicy
ChainResponsePolicy::check public function Determines whether it is save to store a page in the cache. Overrides ResponsePolicyInterface::check
ResponsePolicyInterface::DENY constant Deny storage of a page in the cache.

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