Architecture

La bibliothèque core/ : 20 classes PHP

QuietCMS n'utilise aucun framework. Toute la logique métier est répartie entre vingt classes PHP regroupées dans le répertoire core/. Chaque classe a une responsabilité unique, déclare strict_types=1 et n'expose que des méthodes statiques — pas d'instanciation, pas d'injection de dépendances, pas de conteneur IoC.

Gestion du contenu

  • ContentManager — Point d'entrée unique pour le CRUD de pages, articles et catégories. Expose getAll(string $type), getBySlug(string $type, string $slug), save(string $type, array $data) et delete(string $type, string $slug). Toutes les lectures et écritures JSON passent par ici.
  • AuthorManager — Gère les profils d'auteurs associés aux articles (nom, bio, avatar, liens sociaux).
  • CommentManager — File de modération des commentaires, comptes lecteurs, approbation et suppression.
  • FormManager — CRUD de formulaires de contact personnalisés, validation des champs, notification par e-mail, stockage des soumissions en JSON.

Sécurité

  • AdminManager — Authentification administrateur, gestion multi-utilisateurs, réinitialisation de mot de passe par token signé.
  • Security — Classe centrale de sécurité : chiffrement AES-256-GCM, tokens CSRF, rate limiting par IP, gestion de session, sanitisation des entrées (clean(), cleanHtml()).
  • RedirectManager — Gestion des redirections 301/302 stockées en JSON, appliquées avant tout rendu de template.

Médias et assets

  • MediaManager — Upload de fichiers, conversion automatique en WebP, sanitisation des SVG via DOMDocument pour éliminer les balises <script> embarquées.
  • ImageService — Redimensionnement et recadrage d'images à la volée via GD.
  • ThumbHelper — Génération et mise en cache des miniatures pour les listings d'articles.

Thèmes et présentation

  • ThemeManager — Lecture des métadonnées de thème (theme.json), gestion du logo et du favicon, éditeur CSS en ligne.
  • SidebarManager — Zones de widgets nommées, rendu par identifiant : SidebarManager::render($id, $settings).
  • BreadcrumbBuilder — Génère le fil d'Ariane HTML en fonction de la route courante.

SEO et metadata

  • SitemapBuilder — Génère sitemap.xml à la volée à partir de tous les contenus publiés.
  • OpenGraphBuilder — Injecte les balises <meta property="og:…"> et Twitter Card dans le <head>.
  • JsonLD — Produit le bloc <script type="application/ld+json"> (Article, BreadcrumbList, WebSite) pour les rich results Google.

Infrastructure

  • Router — Résolution des patterns d'URL vers les templates PHP.
  • Mailer — Envoi d'e-mails via SMTP avec une implémentation légère inspirée de PHPMailer.
  • PluginManager — Système de hooks (body_end, head_end), activation et désactivation de plugins tiers.
  • AIGenerator — Interface optionnelle vers l'API Claude d'Anthropic pour la génération assistée de contenu depuis le back-office.

Principes de conception

Toutes les classes respectent les mêmes conventions : Pour replacer ce point dans son ensemble, consultez la rubrique Architecture. Pour approfondir une question voisine, consultez le guide Le routeur PHP sans framework. Pour approfondir une question voisine, consultez le guide Stockage JSON : l'architecture flat-file.

  • declare(strict_types=1) en tête de chaque fichier.
  • Méthodes 100 % statiques — aucun new ClassName() dans le code applicatif.
  • Aucune dépendance externe : uniquement la bibliothèque standard PHP (SPL, OpenSSL, GD, DOMDocument).
  • Un fichier par classe, nommé identiquement (Security.php, ContentManager.php…).

Cette structure rend QuietCMS particulièrement facile à auditer : chaque classe est une unité indépendante qu'on peut lire, tester et remplacer sans toucher au reste du système.

Articles similaires