@@ -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