@@ -45,66 +45,63 @@ class ClassLoader
4545 /** @var \Closure(string):void */
4646 private static $ includeFile ;
4747
48- /** @var ? string */
48+ /** @var string|null */
4949 private $ vendorDir ;
5050
5151 // PSR-4
5252 /**
53- * @var array[]
54- * @psalm-var array<string, array<string, int>>
53+ * @var array<string, array<string, int>>
5554 */
5655 private $ prefixLengthsPsr4 = array ();
5756 /**
58- * @var array[]
59- * @psalm-var array<string, array<int, string>>
57+ * @var array<string, list<string>>
6058 */
6159 private $ prefixDirsPsr4 = array ();
6260 /**
63- * @var array[]
64- * @psalm-var array<string, string>
61+ * @var list<string>
6562 */
6663 private $ fallbackDirsPsr4 = array ();
6764
6865 // PSR-0
6966 /**
70- * @var array[]
71- * @psalm-var array<string, array<string, string[]>>
67+ * List of PSR-0 prefixes
68+ *
69+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
70+ *
71+ * @var array<string, array<string, list<string>>>
7272 */
7373 private $ prefixesPsr0 = array ();
7474 /**
75- * @var array[]
76- * @psalm-var array<string, string>
75+ * @var list<string>
7776 */
7877 private $ fallbackDirsPsr0 = array ();
7978
8079 /** @var bool */
8180 private $ useIncludePath = false ;
8281
8382 /**
84- * @var string[]
85- * @psalm-var array<string, string>
83+ * @var array<string, string>
8684 */
8785 private $ classMap = array ();
8886
8987 /** @var bool */
9088 private $ classMapAuthoritative = false ;
9189
9290 /**
93- * @var bool[]
94- * @psalm-var array<string, bool>
91+ * @var array<string, bool>
9592 */
9693 private $ missingClasses = array ();
9794
98- /** @var ? string */
95+ /** @var string|null */
9996 private $ apcuPrefix ;
10097
10198 /**
102- * @var self[]
99+ * @var array<string, self>
103100 */
104101 private static $ registeredLoaders = array ();
105102
106103 /**
107- * @param ? string $vendorDir
104+ * @param string|null $vendorDir
108105 */
109106 public function __construct ($ vendorDir = null )
110107 {
@@ -113,7 +110,7 @@ public function __construct($vendorDir = null)
113110 }
114111
115112 /**
116- * @return string[]
113+ * @return array< string, list<string>>
117114 */
118115 public function getPrefixes ()
119116 {
@@ -125,44 +122,39 @@ public function getPrefixes()
125122 }
126123
127124 /**
128- * @return array[]
129- * @psalm-return array<string, array<int, string>>
125+ * @return array<string, list<string>>
130126 */
131127 public function getPrefixesPsr4 ()
132128 {
133129 return $ this ->prefixDirsPsr4 ;
134130 }
135131
136132 /**
137- * @return array[]
138- * @psalm-return array<string, string>
133+ * @return list<string>
139134 */
140135 public function getFallbackDirs ()
141136 {
142137 return $ this ->fallbackDirsPsr0 ;
143138 }
144139
145140 /**
146- * @return array[]
147- * @psalm-return array<string, string>
141+ * @return list<string>
148142 */
149143 public function getFallbackDirsPsr4 ()
150144 {
151145 return $ this ->fallbackDirsPsr4 ;
152146 }
153147
154148 /**
155- * @return string[] Array of classname => path
156- * @psalm-return array<string, string>
149+ * @return array<string, string> Array of classname => path
157150 */
158151 public function getClassMap ()
159152 {
160153 return $ this ->classMap ;
161154 }
162155
163156 /**
164- * @param string[] $classMap Class to filename map
165- * @psalm-param array<string, string> $classMap
157+ * @param array<string, string> $classMap Class to filename map
166158 *
167159 * @return void
168160 */
@@ -179,24 +171,25 @@ public function addClassMap(array $classMap)
179171 * Registers a set of PSR-0 directories for a given prefix, either
180172 * appending or prepending to the ones previously set for this prefix.
181173 *
182- * @param string $prefix The prefix
183- * @param string[] |string $paths The PSR-0 root directories
184- * @param bool $prepend Whether to prepend the directories
174+ * @param string $prefix The prefix
175+ * @param list< string> |string $paths The PSR-0 root directories
176+ * @param bool $prepend Whether to prepend the directories
185177 *
186178 * @return void
187179 */
188180 public function add ($ prefix , $ paths , $ prepend = false )
189181 {
182+ $ paths = (array ) $ paths ;
190183 if (!$ prefix ) {
191184 if ($ prepend ) {
192185 $ this ->fallbackDirsPsr0 = array_merge (
193- ( array ) $ paths ,
186+ $ paths ,
194187 $ this ->fallbackDirsPsr0
195188 );
196189 } else {
197190 $ this ->fallbackDirsPsr0 = array_merge (
198191 $ this ->fallbackDirsPsr0 ,
199- ( array ) $ paths
192+ $ paths
200193 );
201194 }
202195
@@ -205,19 +198,19 @@ public function add($prefix, $paths, $prepend = false)
205198
206199 $ first = $ prefix [0 ];
207200 if (!isset ($ this ->prefixesPsr0 [$ first ][$ prefix ])) {
208- $ this ->prefixesPsr0 [$ first ][$ prefix ] = ( array ) $ paths ;
201+ $ this ->prefixesPsr0 [$ first ][$ prefix ] = $ paths ;
209202
210203 return ;
211204 }
212205 if ($ prepend ) {
213206 $ this ->prefixesPsr0 [$ first ][$ prefix ] = array_merge (
214- ( array ) $ paths ,
207+ $ paths ,
215208 $ this ->prefixesPsr0 [$ first ][$ prefix ]
216209 );
217210 } else {
218211 $ this ->prefixesPsr0 [$ first ][$ prefix ] = array_merge (
219212 $ this ->prefixesPsr0 [$ first ][$ prefix ],
220- ( array ) $ paths
213+ $ paths
221214 );
222215 }
223216 }
@@ -226,27 +219,28 @@ public function add($prefix, $paths, $prepend = false)
226219 * Registers a set of PSR-4 directories for a given namespace, either
227220 * appending or prepending to the ones previously set for this namespace.
228221 *
229- * @param string $prefix The prefix/namespace, with trailing '\\'
230- * @param string[] |string $paths The PSR-4 base directories
231- * @param bool $prepend Whether to prepend the directories
222+ * @param string $prefix The prefix/namespace, with trailing '\\'
223+ * @param list< string> |string $paths The PSR-4 base directories
224+ * @param bool $prepend Whether to prepend the directories
232225 *
233226 * @throws \InvalidArgumentException
234227 *
235228 * @return void
236229 */
237230 public function addPsr4 ($ prefix , $ paths , $ prepend = false )
238231 {
232+ $ paths = (array ) $ paths ;
239233 if (!$ prefix ) {
240234 // Register directories for the root namespace.
241235 if ($ prepend ) {
242236 $ this ->fallbackDirsPsr4 = array_merge (
243- ( array ) $ paths ,
237+ $ paths ,
244238 $ this ->fallbackDirsPsr4
245239 );
246240 } else {
247241 $ this ->fallbackDirsPsr4 = array_merge (
248242 $ this ->fallbackDirsPsr4 ,
249- ( array ) $ paths
243+ $ paths
250244 );
251245 }
252246 } elseif (!isset ($ this ->prefixDirsPsr4 [$ prefix ])) {
@@ -256,18 +250,18 @@ public function addPsr4($prefix, $paths, $prepend = false)
256250 throw new \InvalidArgumentException ("A non-empty PSR-4 prefix must end with a namespace separator. " );
257251 }
258252 $ this ->prefixLengthsPsr4 [$ prefix [0 ]][$ prefix ] = $ length ;
259- $ this ->prefixDirsPsr4 [$ prefix ] = ( array ) $ paths ;
253+ $ this ->prefixDirsPsr4 [$ prefix ] = $ paths ;
260254 } elseif ($ prepend ) {
261255 // Prepend directories for an already registered namespace.
262256 $ this ->prefixDirsPsr4 [$ prefix ] = array_merge (
263- ( array ) $ paths ,
257+ $ paths ,
264258 $ this ->prefixDirsPsr4 [$ prefix ]
265259 );
266260 } else {
267261 // Append directories for an already registered namespace.
268262 $ this ->prefixDirsPsr4 [$ prefix ] = array_merge (
269263 $ this ->prefixDirsPsr4 [$ prefix ],
270- ( array ) $ paths
264+ $ paths
271265 );
272266 }
273267 }
@@ -276,8 +270,8 @@ public function addPsr4($prefix, $paths, $prepend = false)
276270 * Registers a set of PSR-0 directories for a given prefix,
277271 * replacing any others previously set for this prefix.
278272 *
279- * @param string $prefix The prefix
280- * @param string[] |string $paths The PSR-0 base directories
273+ * @param string $prefix The prefix
274+ * @param list< string> |string $paths The PSR-0 base directories
281275 *
282276 * @return void
283277 */
@@ -294,8 +288,8 @@ public function set($prefix, $paths)
294288 * Registers a set of PSR-4 directories for a given namespace,
295289 * replacing any others previously set for this namespace.
296290 *
297- * @param string $prefix The prefix/namespace, with trailing '\\'
298- * @param string[] |string $paths The PSR-4 base directories
291+ * @param string $prefix The prefix/namespace, with trailing '\\'
292+ * @param list< string> |string $paths The PSR-4 base directories
299293 *
300294 * @throws \InvalidArgumentException
301295 *
@@ -481,9 +475,9 @@ public function findFile($class)
481475 }
482476
483477 /**
484- * Returns the currently registered loaders indexed by their corresponding vendor directories.
478+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
485479 *
486- * @return self[]
480+ * @return array<string, self>
487481 */
488482 public static function getRegisteredLoaders ()
489483 {
0 commit comments