Aller au contenu principal

🔄 Cycle de Vie des Requêtes

Chaque Requête Commence à index.php

  1. Définir les constantes (ROOT, APP, CONFIG)
  2. Charger les fonctions helper
  3. Vérifier si installé (config/database.php existe-t-il ?)
  4. Si non installé → rediriger vers /install/
  5. Charger la config BDD + helpers, démarrer la session
  6. Calculer le chemin de la requête (gère les installations en sous-répertoire)
  7. 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 $page et inclut layout.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