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

Breadcrumb

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

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\DependencyResolver

Code

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;
}

API Navigation

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