diff --git a/src/Composer/InstalledPackageResolver.php b/src/Composer/InstalledPackageResolver.php index 50c4bc44ff3..cf7615c2e57 100644 --- a/src/Composer/InstalledPackageResolver.php +++ b/src/Composer/InstalledPackageResolver.php @@ -17,7 +17,7 @@ final class InstalledPackageResolver { /** - * @var null|InstalledPackage[] + * @var null|array */ private ?array $resolvedInstalledPackages = null; @@ -33,7 +33,7 @@ public function __construct( } /** - * @return InstalledPackage[] + * @return array */ public function resolve(): array { @@ -61,28 +61,20 @@ public function resolve(): array public function resolvePackageVersion(string $packageName): ?string { - $installedPackages = $this->resolve(); - foreach ($installedPackages as $installedPackage) { - if ($installedPackage->getName() !== $packageName) { - continue; - } - - return $installedPackage->getVersion(); - } - - return null; + return ($this->resolve()[$packageName] ?? null)?->getVersion(); } /** * @param mixed[] $packages - * @return InstalledPackage[] + * @return array */ private function createInstalledPackages(array $packages): array { $installedPackages = []; foreach ($packages as $package) { - $installedPackages[] = new InstalledPackage($package['name'], $package['version_normalized']); + $name = $package['name']; + $installedPackages[$name] = new InstalledPackage($name, $package['version_normalized']); } return $installedPackages; diff --git a/src/Set/ValueObject/ComposerTriggeredSet.php b/src/Set/ValueObject/ComposerTriggeredSet.php index 3964c7865be..c094d213d52 100644 --- a/src/Set/ValueObject/ComposerTriggeredSet.php +++ b/src/Set/ValueObject/ComposerTriggeredSet.php @@ -40,19 +40,17 @@ public function getSetFilePath(): string } /** - * @param InstalledPackage[] $installedPackages + * @param array $installedPackages */ public function matchInstalledPackages(array $installedPackages): bool { - foreach ($installedPackages as $installedPackage) { - if ($installedPackage->getName() !== $this->packageName) { - continue; - } + $installedVersion = ($installedPackages[$this->packageName] ?? null)?->getVersion(); - return Semver::satisfies($installedPackage->getVersion(), '^' . $this->version); + if ($installedVersion === null) { + return false; } - return false; + return Semver::satisfies($installedVersion, '^' . $this->version); } public function getName(): string