$file_info) { if (!isset($file_info['namespace']) || !isset($file_info['class'])) { continue; } // Check if this is the class we're looking for $full_class_name = $file_info['namespace'] . '\\' . $file_info['class']; if ($full_class_name === $class) { // Found it! Load the file (convert relative to absolute) // Convert backslashes to forward slashes for path $file_path = str_replace('\\', '/', $file_path); $absolute_path = base_path($file_path); if (file_exists($absolute_path)) { require_once $absolute_path; return true; } } } // Class not found in manifest - return false to let other autoloaders try return false; } /** * Load RSX base classes */ protected static function __load_rsx_base_class($class) { // Map of base classes to their locations $base_classes = [ 'Rsx_Controller_Abstract' => 'app/RSpade/Core/Base/Rsx_Controller_Abstract.php', ]; if (isset($base_classes[$class])) { $file = base_path($base_classes[$class]); if (file_exists($file)) { require_once $file; return true; } } return false; } /** * Load an aliased class */ protected static function __load_aliased_class($class) { $actual_class = static::$aliases[$class]; // Try to load the actual class if (class_exists($actual_class, true)) { class_alias($actual_class, $class); return true; } return false; } /** * Load a class from the autoloader class map * @param string $class Simple class name without namespace */ protected static function __load_from_class_map($class) { // Load class map from manifest if not cached if (static::$class_map === null) { static::$class_map = Manifest::get_autoloader_class_map(); } // Check if the class exists in the map if (!isset(static::$class_map[$class])) { return false; } $fqcns = static::$class_map[$class]; // If multiple FQCNs exist for this simple name, throw an error if (count($fqcns) > 1) { $error_msg = "Fatal error: Ambiguous class name '{$class}'. Multiple classes found:\n"; foreach ($fqcns as $fqcn) { $error_msg .= " - {$fqcn}\n"; } $error_msg .= 'Please use the fully qualified class name (FQCN) to resolve ambiguity.'; throw new RuntimeException($error_msg); } // Single FQCN found, try to load it $fqcn = $fqcns[0]; // Try to autoload the actual class if (class_exists($fqcn, true) || interface_exists($fqcn, true) || trait_exists($fqcn, true)) { // Create an alias for the simple name class_alias($fqcn, $class); return true; } return false; } /** * Load class aliases from configuration */ protected static function __load_aliases() { if (static::$aliases_loaded) { return; } // Future: Load from config/rsx.php static::$aliases = [ // Example: 'UserModel' => 'Rsx\Models\User_Model' ]; static::$aliases_loaded = true; } /** * Refresh the manifest and retry loading */ public static function refresh_and_retry($class) { // // In development mode, rebuild manifest if class not found // if (config('app.env') === 'local') { // Manifest::rebuild(); // return static::load($class); // } return false; } }