Skip to content

Commit 6163025

Browse files
committed
fix for fallback autoloader
Signed-off-by: Andy Miller <[email protected]>
1 parent 24071e1 commit 6163025

File tree

1 file changed

+29
-31
lines changed

1 file changed

+29
-31
lines changed

admin.php

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)