@@ -37,7 +37,7 @@ public function __construct(string $rootNamespace)
37
37
public function getClassLoader (): ClassLoader
38
38
{
39
39
if (null === $ this ->classLoader ) {
40
- $ this ->findComposerClassLoader ();
40
+ $ this ->classLoader = $ this -> findComposerClassLoader ();
41
41
}
42
42
43
43
if (null === $ this ->classLoader ) {
@@ -47,16 +47,26 @@ public function getClassLoader(): ClassLoader
47
47
return $ this ->classLoader ;
48
48
}
49
49
50
+ /**
51
+ * @return ClassLoader|null
52
+ */
50
53
private function findComposerClassLoader ()
51
54
{
52
55
$ autoloadFunctions = spl_autoload_functions ();
53
56
54
57
foreach ($ autoloadFunctions as $ autoloader ) {
55
58
$ 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 ;
58
66
}
59
67
}
68
+
69
+ return null ;
60
70
}
61
71
62
72
/**
@@ -78,28 +88,28 @@ private function extractComposerClassLoader(array $autoloader)
78
88
return null ;
79
89
}
80
90
81
- private function locateMatchingClassLoader (ClassLoader $ classLoader ): bool
91
+ /**
92
+ * @return ClassLoader|null
93
+ */
94
+ private function locateMatchingClassLoader (ClassLoader $ classLoader )
82
95
{
96
+ $ makerClassLoader = null ;
83
97
foreach ($ classLoader ->getPrefixesPsr4 () as $ prefix => $ paths ) {
84
- // We can default to using the autoloader containing this component if none are matching.
85
98
if ('Symfony \\Bundle \\MakerBundle \\' === $ prefix ) {
86
- $ this -> classLoader = $ classLoader ;
99
+ $ makerClassLoader = $ classLoader ;
87
100
}
88
101
if (0 === strpos ($ this ->rootNamespace ['psr4 ' ], $ prefix )) {
89
- $ this ->classLoader = $ classLoader ;
90
-
91
- return true ;
102
+ return $ classLoader ;
92
103
}
93
104
}
94
105
95
106
foreach ($ classLoader ->getPrefixes () as $ prefix => $ paths ) {
96
107
if (0 === strpos ($ this ->rootNamespace ['psr0 ' ], $ prefix )) {
97
- $ this ->classLoader = $ classLoader ;
98
-
99
- return true ;
108
+ return $ classLoader ;
100
109
}
101
110
}
102
111
103
- return false ;
112
+ // We can default to using the autoloader containing this component if none are matching.
113
+ return $ makerClassLoader ?: null ;
104
114
}
105
115
}
0 commit comments