@@ -182,41 +182,39 @@ public function autoload(): ClassLoader
182182 {
183183 // Register a fallback autoloader for vendor dependencies that might be missing during upgrades.
184184 // This helps prevent "class not found" errors when upgrading between versions with different dependencies.
185- // The fallback reads the autoload maps from the NEW vendor directory on disk.
186- $ vendorDir = __DIR__ . '/vendor ' ;
187- $ psr4File = $ vendorDir . '/composer/autoload_psr4.php ' ;
188- $ classmapFile = $ vendorDir . '/composer/autoload_classmap.php ' ;
189-
190- $ psr4Map = file_exists ($ psr4File ) ? require $ psr4File : [];
191- $ classMap = file_exists ($ classmapFile ) ? require $ classmapFile : [];
192-
193- if ($ psr4Map || $ classMap ) {
194- spl_autoload_register (function ($ class ) use ($ psr4Map , $ classMap ) {
195- // First check classmap for exact class match
196- if (isset ($ classMap [$ class ]) && file_exists ($ classMap [$ class ])) {
197- require_once $ classMap [$ class ];
198- return true ;
199- }
185+ // The fallback reads the autoload maps fresh from disk each time - critical because files may change during upgrades.
186+ $ psr4File = __DIR__ . '/vendor/composer/autoload_psr4.php ' ;
187+ $ classmapFile = __DIR__ . '/vendor/composer/autoload_classmap.php ' ;
188+
189+ spl_autoload_register (function ($ class ) use ($ psr4File , $ classmapFile ) {
190+ // Read fresh from disk - files may have been replaced during an upgrade
191+ $ classMap = file_exists ($ classmapFile ) ? (include $ classmapFile ) : [];
192+ $ psr4Map = file_exists ($ psr4File ) ? (include $ psr4File ) : [];
193+
194+ // First check classmap for exact class match
195+ if (isset ($ classMap [$ class ]) && file_exists ($ classMap [$ class ])) {
196+ require_once $ classMap [$ class ];
197+ return true ;
198+ }
200199
201- // Then try PSR-4 namespaces
202- foreach ($ psr4Map as $ prefix => $ paths ) {
203- $ prefixLen = strlen ($ prefix );
204- if (strncmp ($ prefix , $ class , $ prefixLen ) === 0 ) {
205- $ relativeClass = substr ($ class , $ prefixLen );
206- $ relativePath = str_replace ('\\' , '/ ' , $ relativeClass ) . '.php ' ;
207-
208- foreach ($ paths as $ path ) {
209- $ file = $ path . '/ ' . $ relativePath ;
210- if (file_exists ($ file )) {
211- require_once $ file ;
212- return true ;
213- }
200+ // Then try PSR-4 namespaces
201+ foreach ($ psr4Map as $ prefix => $ paths ) {
202+ $ prefixLen = strlen ($ prefix );
203+ if (strncmp ($ prefix , $ class , $ prefixLen ) === 0 ) {
204+ $ relativeClass = substr ($ class , $ prefixLen );
205+ $ relativePath = str_replace ('\\' , '/ ' , $ relativeClass ) . '.php ' ;
206+
207+ foreach ($ paths as $ path ) {
208+ $ file = $ path . '/ ' . $ relativePath ;
209+ if (file_exists ($ file )) {
210+ require_once $ file ;
211+ return true ;
214212 }
215213 }
216214 }
217- return false ;
218- }, true , false ); // prepend=true to run before other autoloaders
219- }
215+ }
216+ return false ;
217+ }, true , false ); // prepend=true to run before other autoloaders
220218
221219 return require __DIR__ . '/vendor/autoload.php ' ;
222220 }
0 commit comments