function PoolBuilder::loadPackagesMarkedForLoading
Parameters
RepositoryInterface[] $repositories:
1 call to PoolBuilder::loadPackagesMarkedForLoading()
- PoolBuilder::buildPool in vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ PoolBuilder.php
File
-
vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ PoolBuilder.php, line 406
Class
- PoolBuilder
- @author Nils Adermann <naderman@naderman.de>
Namespace
Composer\DependencyResolverCode
private function loadPackagesMarkedForLoading(Request $request, array $repositories) : void {
foreach ($this->packagesToLoad as $name => $constraint) {
if ($this->restrictedPackagesList !== null && !isset($this->restrictedPackagesList[$name])) {
unset($this->packagesToLoad[$name]);
continue;
}
$this->loadedPackages[$name] = $constraint;
}
$packageBatch = $this->packagesToLoad;
$this->packagesToLoad = [];
foreach ($repositories as $repoIndex => $repository) {
if (0 === \count($packageBatch)) {
break;
}
// these repos have their packages fixed or locked if they need to be loaded so we
// never need to load anything else from them
if ($repository instanceof PlatformRepository || $repository === $request->getLockedRepository()) {
continue;
}
$result = $repository->loadPackages($packageBatch, $this->acceptableStabilities, $this->stabilityFlags, $this->loadedPerRepo[$repoIndex] ?? []);
foreach ($result['namesFound'] as $name) {
// avoid loading the same package again from other repositories once it has been found
unset($packageBatch[$name]);
}
foreach ($result['packages'] as $package) {
$this->loadedPerRepo[$repoIndex][$package->getName()][$package->getVersion()] = $package;
if (in_array($package->getType(), $this->ignoredTypes, true) || $this->allowedTypes !== null && !in_array($package->getType(), $this->allowedTypes, true)) {
continue;
}
$this->loadPackage($request, $repositories, $package, !isset($this->pathRepoUnlocked[$package->getName()]));
}
}
}