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

Breadcrumb

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

function ArrayRepository::loadPackages

@inheritDoc

Overrides RepositoryInterface::loadPackages

2 calls to ArrayRepository::loadPackages()
ComposerRepository::loadPackages in vendor/composer/composer/src/Composer/Repository/ComposerRepository.php
@inheritDoc
ComposerRepository::loadPackages in vendor/composer/composer/src/Composer/Repository/ComposerRepository.php
@inheritDoc
1 method overrides ArrayRepository::loadPackages()
ComposerRepository::loadPackages in vendor/composer/composer/src/Composer/Repository/ComposerRepository.php
@inheritDoc

File

vendor/composer/composer/src/Composer/Repository/ArrayRepository.php, line 60

Class

ArrayRepository
A repository implementation that simply stores packages in an array

Namespace

Composer\Repository

Code

public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []) {
    $packages = $this->getPackages();
    $result = [];
    $namesFound = [];
    foreach ($packages as $package) {
        if (array_key_exists($package->getName(), $packageNameMap)) {
            if ((!$packageNameMap[$package->getName()] || $packageNameMap[$package->getName()]
                ->matches(new Constraint('==', $package->getVersion()))) && StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, $package->getNames(), $package->getStability()) && !isset($alreadyLoaded[$package->getName()][$package->getVersion()])) {
                // add selected packages which match stability requirements
                $result[spl_object_hash($package)] = $package;
                // add the aliased package for packages where the alias matches
                if ($package instanceof AliasPackage && !isset($result[spl_object_hash($package->getAliasOf())])) {
                    $result[spl_object_hash($package->getAliasOf())] = $package->getAliasOf();
                }
            }
            $namesFound[$package->getName()] = true;
        }
    }
    // add aliases of packages that were selected, even if the aliases did not match
    foreach ($packages as $package) {
        if ($package instanceof AliasPackage) {
            if (isset($result[spl_object_hash($package->getAliasOf())])) {
                $result[spl_object_hash($package)] = $package;
            }
        }
    }
    return [
        'namesFound' => array_keys($namesFound),
        'packages' => $result,
    ];
}

API Navigation

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