function DefaultPolicy::pruneToBestVersion
Parameters
list<int> $literals:
Return value
list<int>
1 call to DefaultPolicy::pruneToBestVersion()
- DefaultPolicy::selectPreferredPackages in vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ DefaultPolicy.php
File
-
vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ DefaultPolicy.php, line 210
Class
- DefaultPolicy
- @author Nils Adermann <naderman@naderman.de> @author Jordi Boggiano <j.boggiano@seld.be>
Namespace
Composer\DependencyResolverCode
protected function pruneToBestVersion(Pool $pool, array $literals) : array {
if ($this->preferredVersions !== null) {
$name = $pool->literalToPackage($literals[0])
->getName();
if (isset($this->preferredVersions[$name])) {
$preferredVersion = $this->preferredVersions[$name];
$bestLiterals = [];
foreach ($literals as $literal) {
if ($pool->literalToPackage($literal)
->getVersion() === $preferredVersion) {
$bestLiterals[] = $literal;
}
}
if (\count($bestLiterals) > 0) {
return $bestLiterals;
}
}
}
$operator = $this->preferLowest ? '<' : '>';
$bestLiterals = [
$literals[0],
];
$bestPackage = $pool->literalToPackage($literals[0]);
foreach ($literals as $i => $literal) {
if (0 === $i) {
continue;
}
$package = $pool->literalToPackage($literal);
if ($this->versionCompare($package, $bestPackage, $operator)) {
$bestPackage = $package;
$bestLiterals = [
$literal,
];
}
elseif ($this->versionCompare($package, $bestPackage, '==')) {
$bestLiterals[] = $literal;
}
}
return $bestLiterals;
}