Software Architect GPT
🏰 Présentation du projet
Le projet est une plateforme modulaire PHP structurée en deux grandes parties :
-
/framework/
Contient le cœur du framework commun à toutes les applications :
-
Bootstrap (init.php, config.php, sessions, etc.).
-
Modules globaux (Common, User, Admin, etc.).
-
Classes partagées (Controllers, Models, etc.).
-
Dépendances Composer (vendor/).
-
Autoload PSR-4 (Apps\ pour les applications).
-
-
/applications/
Contient les modules applicatifs (exemples : hjc, cc, dashboard), chacun étant une mini-application :
-
Assets/ (CSS, JS, Images),
-
Config/ (configurations locales comme app_config.php, routes.php),
-
Controllers/ (contrôleurs spécifiques),
-
Models/ (modèles spécifiques),
-
Views/ (vues spécifiques),
-
public/ (front controller spécifique du module).
-
🛡️ Fonctionnement général
-
Chaque module dispose de son propre Front Controller (public/index.php) qui :
-
Vérifie la session utilisateur ($_SESSION['user_id']).
-
Charge un router mixte :
-
Si page=x est donné et correspond à une simple vue (Views/x.php), il l’affiche.
-
Si page=controller/action, il instancie dynamiquement le contrôleur (Controllers/) et appelle la méthode correspondante.
-
En cas d’erreur ou d’absence de route, il redirige vers une page d’accueil ou une 404.
-
-
-
Le framework fournit le socle commun :
-
Gestion centralisée de l’authentification et des droits.
-
Gestion de l’affichage des templates de base (entête, pied de page, etc.).
-
Gestion commune des sessions, des erreurs, des configurations globales.
-
-
Le routing est défini soit :
-
Par un tableau de routes simples dans Config/routes.php pour les vues.
-
Par des conventions de nommage pour les contrôleurs et méthodes pour les traitements métiers.
-
📚 Fonctionnement MVC des modules
Chaque application/module suit un pattern MVC simplifié :
-
Modèle (Models/) : gestion des données (peu utilisé dans les modules simples pour l’instant).
-
Vue (Views/) : affichage HTML.
-
Contrôleur (Controllers/) : logique métier et appel aux vues.
Le routeur détecte si l’appel est destiné :
-
À une vue statique (Views/*.php),
-
Ou à un contrôleur/méthode (Controllers/*Controller.php → method()).
🛡️ Objectifs demandés à Software Architect GP
-
Renforcer et généraliser le router mixte pour tous les modules :
-
Gestion native des vues simples et des contrôleurs/méthodes.
-
Système d’erreur 404 propre en cas d’absence de route/méthode/vue.
-
Option future : routing avancé (POST, GET, paramètres dynamiques).
-
-
Standardiser le CRUD sur les entités :
-
Chaque module pourra gérer des entités (ex: ventes, clients, utilisateurs) avec un CRUD minimal :
-
Create : Formulaire de création et insertion en base.
-
Read : Liste paginée des enregistrements.
-
Update : Formulaire de mise à jour.
-
Delete : Suppression logique ou physique.
-
-
Générer des contrôleurs type VenteController, ClientController avec :
-
list()
-
create()
-
store()
-
edit($id)
-
update($id)
-
delete($id)
-
-
-
Assurer l’intégration harmonieuse avec le framework :
-
Le contrôleur devra pouvoir appeler facilement :
-
le modèle du module (Apps\Module\Models\NomModel),
-
les vues du module (Views/*.php),
-
les composants globaux (Common, etc.).
-
-
-
Préparer un système évolutif :
-
Pouvoir ajouter des middlewares dans les modules (ex : vérification des permissions),
-
Pouvoir gérer le passage de paramètres (id dans l’URL, pagination),
-
Pouvoir appeler une action RESTful plus facilement (GET, POST, PUT, DELETE).
-
🏗️ Structure actuelle type
/var/www/html/
├── framework/
│ ├── app/
│ ├── src/
│ ├── vendor/
│ ├── .env
│ ├── composer.json
│ ├── manage_app.php
│ └── README.md
└── applications/
├── hjc/
│ ├── Assets/
│ ├── Config/
│ │ └── routes.php
│ ├── Controllers/
│ ├── Models/
│ ├── Views/
│ └── public/
│ └── index.php (routeur mixte)
├── cc/
└── dashboard/
📜 Liste des éléments qu’il faudra prévoir/envoyer à Software Architect GP par la suite
-
🛠️ Exemples de contrôleurs existants (VentesController, etc.).
-
🛠️ Exemples de vues (Views/dashboard.php, etc.).
-
📄 Un modèle d’entité simple (VenteModel.php) pour définir le CRUD.
-
🧩 Le bootstrap et l’init actuels du framework pour voir la gestion des sessions, erreurs, config.
-
🧩 Exemple de routes.php pour comprendre la structure des routes statiques actuelles.
-
📄 Éventuellement l’extrait de la gestion centralisée d’authentification.
-
📚 Normes internes souhaitées (nommage, PSR-4, gestion des erreurs, etc.).
🛡️ Résultat attendu
-
Un routeur commun solide utilisable dans toutes les applications.
-
Un socle CRUD modulaire, facilement personnalisable pour chaque module.
-
Une architecture légère, évolutive, respectant les standards de qualité modernes (PSR-4, MVC, bonnes pratiques PHP 8+).
No comments to display
No comments to display