Skip to content

Commit 719979e

Browse files
Return objects from methods & switch fallback logic
1 parent 22f5a3b commit 719979e

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

src/Util/ComposerAutoloaderFinder.php

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function __construct(string $rootNamespace)
3737
public function getClassLoader(): ClassLoader
3838
{
3939
if (null === $this->classLoader) {
40-
$this->findComposerClassLoader();
40+
$this->classLoader = $this->findComposerClassLoader();
4141
}
4242

4343
if (null === $this->classLoader) {
@@ -47,16 +47,26 @@ public function getClassLoader(): ClassLoader
4747
return $this->classLoader;
4848
}
4949

50+
/**
51+
* @return ClassLoader|null
52+
*/
5053
private function findComposerClassLoader()
5154
{
5255
$autoloadFunctions = spl_autoload_functions();
5356

5457
foreach ($autoloadFunctions as $autoloader) {
5558
$classLoader = $this->extractComposerClassLoader($autoloader);
56-
if ($classLoader && $this->locateMatchingClassLoader($classLoader)) {
57-
return;
59+
if (null === $classLoader) {
60+
continue;
61+
}
62+
63+
$finalClassLoader = $this->locateMatchingClassLoader($classLoader);
64+
if (null !== $finalClassLoader) {
65+
return $finalClassLoader;
5866
}
5967
}
68+
69+
return null;
6070
}
6171

6272
/**
@@ -78,28 +88,28 @@ private function extractComposerClassLoader(array $autoloader)
7888
return null;
7989
}
8090

81-
private function locateMatchingClassLoader(ClassLoader $classLoader): bool
91+
/**
92+
* @return ClassLoader|null
93+
*/
94+
private function locateMatchingClassLoader(ClassLoader $classLoader)
8295
{
96+
$makerClassLoader = null;
8397
foreach ($classLoader->getPrefixesPsr4() as $prefix => $paths) {
84-
// We can default to using the autoloader containing this component if none are matching.
8598
if ('Symfony\\Bundle\\MakerBundle\\' === $prefix) {
86-
$this->classLoader = $classLoader;
99+
$makerClassLoader = $classLoader;
87100
}
88101
if (0 === strpos($this->rootNamespace['psr4'], $prefix)) {
89-
$this->classLoader = $classLoader;
90-
91-
return true;
102+
return $classLoader;
92103
}
93104
}
94105

95106
foreach ($classLoader->getPrefixes() as $prefix => $paths) {
96107
if (0 === strpos($this->rootNamespace['psr0'], $prefix)) {
97-
$this->classLoader = $classLoader;
98-
99-
return true;
108+
return $classLoader;
100109
}
101110
}
102111

103-
return false;
112+
// We can default to using the autoloader containing this component if none are matching.
113+
return $makerClassLoader ?: null;
104114
}
105115
}

0 commit comments

Comments
 (0)