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\RepositoryCode
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,
];
}