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

Breadcrumb

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

function CanonicalPackagesTrait::getCanonicalPackages

Get unique packages (at most one package of each name), with aliases resolved and removed.

Return value

PackageInterface[]

1 call to CanonicalPackagesTrait::getCanonicalPackages()
FilesystemRepository::write in vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php
Writes writable repository.

File

vendor/composer/composer/src/Composer/Repository/CanonicalPackagesTrait.php, line 30

Class

CanonicalPackagesTrait
Provides getCanonicalPackages() to various repository implementations

Namespace

Composer\Repository

Code

public function getCanonicalPackages() {
    $packages = $this->getPackages();
    // get at most one package of each name, preferring non-aliased ones
    $packagesByName = [];
    foreach ($packages as $package) {
        if (!isset($packagesByName[$package->getName()]) || $packagesByName[$package->getName()] instanceof AliasPackage) {
            $packagesByName[$package->getName()] = $package;
        }
    }
    $canonicalPackages = [];
    // unfold aliased packages
    foreach ($packagesByName as $package) {
        while ($package instanceof AliasPackage) {
            $package = $package->getAliasOf();
        }
        $canonicalPackages[] = $package;
    }
    return $canonicalPackages;
}
RSS feed
Powered by Drupal