class ChainRequestPolicy
Implements a compound request policy.
When evaluating the compound policy, all of the contained rules are applied to the request. 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>Returns static::ALLOW if at least one of the rules evaluated to static::ALLOW and none to static::DENY</li> <li>Otherwise returns NULL</li> </ol>
Hierarchy
- class \Drupal\Core\PageCache\ChainRequestPolicy implements \Drupal\Core\PageCache\ChainRequestPolicyInterface
Expanded class hierarchy of ChainRequestPolicy
2 files declare their use of ChainRequestPolicy
- ChainRequestPolicyTest.php in core/tests/ Drupal/ Tests/ Core/ PageCache/ ChainRequestPolicyTest.php 
- DefaultRequestPolicy.php in core/modules/ dynamic_page_cache/ src/ PageCache/ RequestPolicy/ DefaultRequestPolicy.php 
File
- 
              core/lib/ Drupal/ Core/ PageCache/ ChainRequestPolicy.php, line 21 
Namespace
Drupal\Core\PageCacheView source
class ChainRequestPolicy implements ChainRequestPolicyInterface {
  
  /**
   * A list of policy rules to apply when this policy is evaluated.
   *
   * @var \Drupal\Core\PageCache\RequestPolicyInterface[]
   */
  protected $rules = [];
  
  /**
   * {@inheritdoc}
   */
  public function check(Request $request) {
    $final_result = NULL;
    foreach ($this->rules as $rule) {
      $result = $rule->check($request);
      if ($result === static::DENY) {
        return $result;
      }
      elseif ($result === static::ALLOW) {
        $final_result = $result;
      }
      elseif (isset($result)) {
        throw new \UnexpectedValueException('Return value of RequestPolicyInterface::check() must be one of RequestPolicyInterface::ALLOW, RequestPolicyInterface::DENY or NULL');
      }
    }
    return $final_result;
  }
  
  /**
   * {@inheritdoc}
   */
  public function addPolicy(RequestPolicyInterface $policy) {
    $this->rules[] = $policy;
    return $this;
  }
}Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | 
|---|---|---|---|---|
| ChainRequestPolicy::$rules | protected | property | A list of policy rules to apply when this policy is evaluated. | |
| ChainRequestPolicy::addPolicy | public | function | Add a policy to the list of policy rules. | Overrides ChainRequestPolicyInterface::addPolicy | 
| ChainRequestPolicy::check | public | function | Determines whether delivery of a cached page should be attempted. | Overrides RequestPolicyInterface::check | 
| RequestPolicyInterface::ALLOW | constant | Allow delivery of cached pages. | ||
| RequestPolicyInterface::DENY | constant | Deny delivery of cached pages. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
