2025-03-19 09:03:03 +01:00

36 lines
1.6 KiB
PHP

<?php
spl_autoload_register(function ($className) {
// Définir les mappings des namespaces vers leurs répertoires de base
$namespaceMap = [
'App\\Configure\\Routing\\' => __DIR__ . '/../routing/',
];
// Parcourir les namespaces définis pour trouver une correspondance
foreach ($namespaceMap as $namespacePrefix => $baseDir) {
// Vérifier si la classe utilise le préfixe du namespace
if (strpos($className, $namespacePrefix) !== 0) {
continue; // Passer à la prochaine itération si aucun préfixe de namespace ne correspond
}
// Retirer le préfixe du namespace pour obtenir le chemin relatif de la classe
$relativeClass = substr($className, strlen($namespacePrefix));
// Convertir le chemin relatif en chemin de fichier
$file = $baseDir . str_replace('\\', DIRECTORY_SEPARATOR, $relativeClass) . '.php';
// Vérifier si le fichier existe et l'inclure
if (file_exists($file)) {
require_once $file;
return; // Sortir de la fonction dès que la classe est chargée
}
// Si le fichier n'existe pas, lever une exception immédiatement
error_log("Autoloader: Impossible de charger la classe '$className' - Fichier non trouvé : $file");
throw new Exception("Autoloader: Fichier introuvable pour la classe '$className'.");
}
// Si aucun namespace ne correspond, lever une exception
error_log("Autoloader: Aucun mapping trouvé pour la classe '$className'.");
throw new Exception("Autoloader: Aucun mapping de namespace trouvé pour la classe '$className'.");
});