<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

spl_autoload_register( 'fluentc_autoload' );

/**
 * FluentC autoload class PHP with class-name.php
 *
 * @since 2.0
 * @param string $class_name
 * @return void
 */
function fluentc_autoload($class_name) {
    $dir_class = __DIR__ . '/src/';
    $prefixes = ['class-', 'interface-', 'trait-']; // Add more prefixes if needed
    $file_parts = explode('\\', $class_name);

    $total_parts = count($file_parts) - 1;
    $dir_file = $dir_class;
    for ($i = 1; $i <= $total_parts; $i++) {
        if ($total_parts !== $i) {
            $dir_file .= strtolower($file_parts[$i]) . '/';
        } else {
            $string = str_replace('_', '-', strtolower($file_parts[$i]));
            
            // Try each prefix
            foreach ($prefixes as $prefix) {
                $file_load = $dir_file . $prefix . $string . '.php';
                if (file_exists($file_load)) {
                    include_once $file_load;
                    return;
                }
            }

            // If no prefixed file found, try without prefix
            $file_load = $dir_file . $string . '.php';
            if (file_exists($file_load)) {
                include_once $file_load;
                return;
            }
        }
    }
}