🔄 Cycle de Vie des Requêtes
Chaque Requête Commence à index.php
- Définir les constantes (
ROOT,APP,CONFIG) - Charger les fonctions helper
- Vérifier si installé (
config/database.phpexiste-t-il ?) - Si non installé → rediriger vers
/install/ - Charger la config BDD + helpers, démarrer la session
- Calculer le chemin de la requête (gère les installations en sous-répertoire)
- Dispatcher via
app/router.php
Le Routeur
app/router.php est une table de dispatch plate avec correspondance de motifs. Les motifs sont compilés en regex et comparés au chemin de la requête. Les groupes de capture sont passés comme arguments de la méthode du contrôleur.
Authentification
La plupart des contrôleurs appellent require_auth() qui redirige les utilisateurs non authentifiés vers /login. Les endpoints réservés aux administrateurs utilisent require_admin() qui retourne un JSON 403.
Les sessions sont remplies lors de la connexion avec user_id, workspace_id, role, et régénérées pour empêcher la fixation de session.
Connexion Base de Données
La connexion PDO est créée paresseusement lors de la première requête (singleton). Utilise ERRMODE_EXCEPTION et des instructions préparées réelles (EMULATE_PREPARES = false).
Formats de Réponse
- Pages HTML : Le contrôleur définit
$pageet inclutlayout.php - APIs JSON :
json_response()définit Content-Type, affiche le JSON, termine - Flux SSE : Boucle persistante avec
text/event-stream, ping toutes les 2s, termine après 55s