WP Theme functions.php includes Autoload

PHP
<?php

/**
 * Lädt alle PHP-Dateien aus einem Verzeichnis rekursiv
 * Ignoriert Dateien und Ordner die mit "_" beginnen
 * 
 * @param string $dir Verzeichnispfad
 * @param bool $sort_files Dateien alphabetisch sortieren (default: true)
 */
function require_all_php(string $dir, bool $sort_files = true): void
{
    $directory = new RecursiveDirectoryIterator(
        $dir, 
        RecursiveDirectoryIterator::SKIP_DOTS
    );
    
    // Filter für Dateien/Ordner die nicht mit "_" beginnen
    $filtered = new RecursiveCallbackFilterIterator(
        $directory, 
        function (SplFileInfo $current): bool {
            $filename = $current->getFilename();
            
            // Ignoriere Dateien/Ordner die mit "_" oder "." beginnen (außer .. und .)
            if (str_starts_with($filename, '_') || str_starts_with($filename, '.')) {
                return false;
            }
            
            // Nur PHP-Dateien oder Verzeichnisse durchlassen
            return $current->isDir() || $current->getExtension() === 'php';
        }
    );

    $iterator = new RecursiveIteratorIterator($filtered);
    $php_files = [];

    // Sammle alle PHP-Dateien
    foreach ($iterator as $file) {
        if ($file->isFile()) {
            $php_files[] = $file->getPathname();
        }
    }

    // Optional sortieren
    if ($sort_files) {
        sort($php_files, SORT_STRING);
    }

    // Dateien einbinden
    foreach ($php_files as $file) {
        require_once $file;
    }
}

// WordPress Theme Verwendung
require_all_php(get_stylesheet_directory() . '/includes/');