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\DependencyResolverCode
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);
}
}
}