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

Breadcrumb

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

function RuleSetGenerator::addRulesForRequest

1 call to RuleSetGenerator::addRulesForRequest()
RuleSetGenerator::getRulesFor in vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php

File

vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php, line 250

Class

RuleSetGenerator
@author Nils Adermann <naderman@naderman.de> @phpstan-import-type ReasonData from Rule

Namespace

Composer\DependencyResolver

Code

protected function addRulesForRequest(Request $request, PlatformRequirementFilterInterface $platformRequirementFilter) : void {
    foreach ($request->getFixedPackages() as $package) {
        if ($package->id === -1) {
            // fixed package was not added to the pool as it did not pass the stability requirements, this is fine
            if ($this->pool
                ->isUnacceptableFixedOrLockedPackage($package)) {
                continue;
            }
            // otherwise, looks like a bug
            throw new \LogicException("Fixed package " . $package->getPrettyString() . " was not added to solver pool.");
        }
        $this->addRulesForPackage($package, $platformRequirementFilter);
        $rule = $this->createInstallOneOfRule([
            $package,
        ], Rule::RULE_FIXED, [
            'package' => $package,
        ]);
        $this->addRule(RuleSet::TYPE_REQUEST, $rule);
    }
    foreach ($request->getRequires() as $packageName => $constraint) {
        if ($platformRequirementFilter->isIgnored($packageName)) {
            continue;
        }
        elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) {
            $constraint = $platformRequirementFilter->filterConstraint($packageName, $constraint);
        }
        $packages = $this->pool
            ->whatProvides($packageName, $constraint);
        if (\count($packages) > 0) {
            foreach ($packages as $package) {
                $this->addRulesForPackage($package, $platformRequirementFilter);
            }
            $rule = $this->createInstallOneOfRule($packages, Rule::RULE_ROOT_REQUIRE, [
                'packageName' => $packageName,
                'constraint' => $constraint,
            ]);
            $this->addRule(RuleSet::TYPE_REQUEST, $rule);
        }
    }
}

API Navigation

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