autoload et .htaccess

This commit is contained in:
sermandm 2025-03-19 09:03:03 +01:00
parent c964e6efc6
commit 41e1a58107
3 changed files with 45 additions and 35 deletions

7
.htaccess Normal file
View File

@ -0,0 +1,7 @@
RewriteEngine On
# Empêcher la réécriture des fichiers existants
RewriteCond %{REQUEST_FILENAME} !-f
# Si le fichier n'existe pas, rediriger vers public/index.php avec l'URL dans le paramètre "url"
RewriteRule ^(.*)$ public/index.php?url=$1 [QSA,L]

View File

@ -1 +1,36 @@
<?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'.");
});

View File

@ -1,35 +1,3 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mon Portfolio</title>
<link rel="stylesheet" href="../css/style.css">
</head>
<body>
<header>
<div id="logo">
<h1>SERMAND Maxim</h1>
</div>
<button id="menu-toggle" aria-expanded="false">&#9776;</button>
<nav id="navbar">
<ul>
<li><a href="index.php" class="active">Accueil</a></li>
<li><a href="about.php">À propos</a></li>
<li><a href="project.php">Projets</a></li>
<li><a href="experience.php">Expériences</a></li>
<li><a href="tech.php">Veilles technologiques</a></li>
<li><a href="contact.php">Contacts</a></li>
</ul>
</nav>
</header>
<section>
<h1>Bienvenue sur mon portfolio !</h1>
<p>Découvrez mes compétences, mes projets et mon parcours.</p>
</section>
<footer>
<p>&copy; SERMAND Maxim, 2025. Tous droits réservés.</p>
</footer>
<script src="../js/script.js"></script>
</body>
</html>
<?php
echo "Salut";