Qu'est-ce que SunMvc ?
Chaque projet construit sur SunMvc démarre à partir du même modèle vierge : routage, contrôleurs/modèles/vues, authentification, i18n et gestion des erreurs sont déjà branchés et testés, sans aucun code spécifique à une application. Plutôt que de reconstruire une nouvelle stack à chaque fois, vous développez votre prochain projet directement sur une base qui fonctionne déjà - et chaque leçon tirée d'un projet précédent (corrections de routage, flux d'authentification, mécanisme de page d'erreur) est réintégrée dans le modèle pour la prochaine fois.
Comment une requête circule
Une requête suit un chemin unique et traçable : .htaccess réécrit chaque URL vers index.php, qui charge l'environnement puis initialise dans un ordre fixe les services de base de données, d'authentification, de filtrage et de localisation, avant de transmettre la main à votre contrôleur. Quand votre code s'exécute, le routage est déjà analysé, la langue déjà résolue, et la protection CSRF déjà vérifiée sur chaque requête POST - vous écrivez la fonctionnalité, pas la plomberie autour.
Contrôleurs, modèles, vues
Contrôleurs, modèles et vues suivent la même structure prévisible dans tout le projet : une classe contrôleur par segment d'URL, une classe modèle pour son accès aux données, un fichier vue par contrôleur (et non par écran). Les variables locales d'un contrôleur sont directement visibles dans sa vue - pas de mécanisme séparé de données de vue à apprendre, pas de moteur de template à combattre.
Authentification et sécurité intégrées
L'authentification est livrée complète, pas comme un exercice laissé au lecteur : connexion, inscription, gestion de session, réinitialisation de mot de passe et authentification à deux facteurs TOTP fonctionnent dès le départ sur un schéma de base de données documenté. La protection CSRF s'exécute automatiquement sur chaque requête POST. Les dossiers sensibles sont bloqués à l'accès direct au niveau du serveur web, pas laissés à la charge du code applicatif.
L'internationalisation que vous utilisez en ce moment
Chaque chaîne visible du framework passe par la même couche de traduction que vous lisez en ce moment - cette page même est rendue dans la langue que vous avez choisie, grâce aux fonctions _t()/_tr() du framework et à une table de traduction plate au format JSON. Ajouter une langue revient à ajouter un code et un fichier de traduction - aucune modification de code nécessaire.
La bibliothèque de classes Sun*
Une petite bibliothèque de classes indépendantes du framework gère ce dont chaque projet a besoin - authentification, générateur de requêtes fluide pour la base de données, nettoyage des entrées, envoi d'e-mails, CAPTCHA et génération de sitemap - délibérément séparée du moteur de routage pour que chaque moitié puisse évoluer indépendamment.
URLs optimisées pour le SEO
Chaque URL est optimisée pour les moteurs de recherche par défaut : .htaccess réécrit des chemins propres comme /en/blog/show/42 directement vers votre contrôleur, sans encombrement de chaîne de requête. Pour un contenu qui mérite une URL lisible - un titre d'article, un nom de produit - _s() et slugId() combinent l'id d'une ligne avec un titre transformé en slug dans un seul segment de chemin (.../blog/show/42-hello-world) ; seul l'id est jamais comparé, donc le lien continue de fonctionner même après modification du titre. SunSitemap, qui fait partie de la bibliothèque de classes Sun*, génère sitemap.xml, sitemap-index.xml et robots.txt directement à partir de vos routes, afin que les moteurs de recherche puissent explorer et indexer votre projet sans outil supplémentaire.
Documenté, dossier par dossier
Chaque dossier structurel du système - Core, System, App/Controllers, App/Models, App/Views, App/Lang et Public - est livré avec son propre README.md expliquant exactement ce qui s'y trouve et comment l'étendre, avec de vrais exemples tirés du code fonctionnel de ce modèle, et non des extraits hypothétiques.
Conçu pour le codage assisté par IA
SunMvc est conçu pour être lu par des outils de codage IA, pas seulement par des humains : ouvrez le dossier du projet dans un éditeur comme VS Code, pointez un assistant IA - Claude, GitHub Copilot, Cursor, Windsurf, Gemini CLI - dessus, laissez-le lire les fichiers README.md répartis dans l'arborescence, puis décrivez le système que vous voulez construire. Il peut concevoir votre idée directement sur la base SunMvc déjà ouverte dans votre espace de travail.
Un générateur de requêtes, toutes les bases de données
Chaque appel à la base de données dans SunMvc passe par une seule classe conçue à la main, SunDB - un unique générateur de requêtes fluide qui parle aussi bien MySQL, MSSQL que SQLite. Changez le pilote dans un seul tableau de configuration et tout continue de fonctionner exactement comme avant : select()/insert()/update()/delete(), paginate() pour des résultats paginés, backup() pour un export SQL en une commande, maintenance() pour analyser/vérifier/optimiser/réparer chaque table, plus les transactions et les aides aux jointures - sans réécriture de requêtes ni chemins de code séparés par pilote.
Prêt pour le SEO, GEO, AIO, SGE, LLMO & AEO
Cette page est conçue pour une compatibilité complète avec le SEO (Search Engine Optimization), le GEO (Generative Engine Optimization), l'AIO (Artificial Intelligence Optimization), le SGE (Search Generative Experience), le LLMO (Large Language Model Optimization) et l'AEO (Answer Engine Optimization) : un sitemap.xml balisé en hreflang et des URLs canoniques pour la recherche classique, un robots.txt qui accueille explicitement GPTBot, ClaudeBot, PerplexityBot et d'autres robots d'exploration IA, un résumé llms.txt écrit pour les agents IA, et des données structurées JSON-LD qui permettent aux moteurs de réponse d'extraire des faits précis plutôt que d'analyser de la prose.
Commencer
Clonez le modèle, copiez .env.example vers .env avec de vrais identifiants de base de données, importez le schéma, choisissez les langues à prendre en charge. Aucune étape de build, aucun fichier de verrouillage de gestionnaire de paquets à gérer - un flux d'authentification fonctionnel et un système i18n entièrement branché sont présents dès la première requête.
Télécharger sur GitHub