From a27395dfcd1ffbe6334655d694eecd99b9f60620 Mon Sep 17 00:00:00 2001 From: David Buchmann Date: Fri, 31 Mar 2023 15:36:28 +0200 Subject: [PATCH] use safe class_exists call to prevent issue with magentos classloader --- CHANGELOG.md | 4 ++++ src/Composer/Plugin.php | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a604b..3a6fdc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 1.15.3 - 2023-03-31 + +- [#224](https://github.com/php-http/discovery/pull/224) - Fix regression with Magento classloader + ## 1.15.2 - 2023-02-11 - [#219](https://github.com/php-http/discovery/pull/219) - Fix handling of replaced packages diff --git a/src/Composer/Plugin.php b/src/Composer/Plugin.php index 9ef26fd..d0db2fa 100644 --- a/src/Composer/Plugin.php +++ b/src/Composer/Plugin.php @@ -18,6 +18,7 @@ use Composer\Repository\RepositorySet; use Composer\Script\Event; use Composer\Script\ScriptEvents; +use Http\Discovery\ClassDiscovery; /** * Auto-installs missing implementations. @@ -187,7 +188,7 @@ public function postUpdate(Event $event) return; } - $versionSelector = new VersionSelector(class_exists(RepositorySet::class) ? new RepositorySet() : new Pool()); + $versionSelector = new VersionSelector(ClassDiscovery::safeClassExists(RepositorySet::class) ? new RepositorySet() : new Pool()); $updateComposerJson = false; foreach ($composer->getRepositoryManager()->getLocalRepository()->getPackages() as $package) { @@ -236,7 +237,7 @@ public function getMissingRequires(InstalledRepositoryInterface $repo, array $re $missingRequires = [[], [], []]; $versionParser = new VersionParser(); - if (class_exists(\Phalcon\Http\Message\RequestFactory::class, false)) { + if (ClassDiscovery::safeClassExists(\Phalcon\Http\Message\RequestFactory::class, false)) { $missingRequires[0]['psr/http-factory-implementation'] = []; $missingRequires[1]['psr/http-factory-implementation'] = []; } @@ -360,7 +361,7 @@ private function updateComposerLock(Composer $composer, IOInterface $io) $lock = substr(Factory::getComposerFile(), 0, -4).'lock'; $composerJson = file_get_contents(Factory::getComposerFile()); $lockFile = new JsonFile($lock, null, $io); - $locker = class_exists(RepositorySet::class) + $locker = ClassDiscovery::safeClassExists(RepositorySet::class) ? new Locker($io, $lockFile, $composer->getInstallationManager(), $composerJson) : new Locker($io, $lockFile, $composer->getRepositoryManager(), $composer->getInstallationManager(), $composerJson); $lockData = $locker->getLockData();