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/');