Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. RuleSet.php

function RuleSet::add

Parameters

self::TYPE_* $type:

File

vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php, line 62

Class

RuleSet
@author Nils Adermann <naderman@naderman.de> @implements \IteratorAggregate<Rule> @internal @final

Namespace

Composer\DependencyResolver

Code

public function add(Rule $rule, $type) : void {
    if (!isset(self::TYPES[$type])) {
        throw new \OutOfBoundsException('Unknown rule type: ' . $type);
    }
    $hash = $rule->getHash();
    // Do not add if rule already exists
    if (isset($this->rulesByHash[$hash])) {
        $potentialDuplicates = $this->rulesByHash[$hash];
        if (\is_array($potentialDuplicates)) {
            foreach ($potentialDuplicates as $potentialDuplicate) {
                if ($rule->equals($potentialDuplicate)) {
                    return;
                }
            }
        }
        else {
            if ($rule->equals($potentialDuplicates)) {
                return;
            }
        }
    }
    if (!isset($this->rules[$type])) {
        $this->rules[$type] = [];
    }
    $this->rules[$type][] = $rule;
    $this->ruleById[$this->nextRuleId] = $rule;
    $rule->setType($type);
    $this->nextRuleId++;
    if (!isset($this->rulesByHash[$hash])) {
        $this->rulesByHash[$hash] = $rule;
    }
    elseif (\is_array($this->rulesByHash[$hash])) {
        $this->rulesByHash[$hash][] = $rule;
    }
    else {
        $originalRule = $this->rulesByHash[$hash];
        $this->rulesByHash[$hash] = [
            $originalRule,
            $rule,
        ];
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal