Vous avez soulevé une question très intéressante et fondamentale. La question concernant l'architecture de projet à grande échelle et l'organisation de la structure des dossiers (qui est secondaire à l'architecture).
Aujourd'hui, l'approche la plus courante pour construire l'architecture du framework CMS est l'utilisation du modèle MVC. Il y a quelques bons articles sur la construction de vos propres frameworks MVC, l'un d'eux est Build an MVC Framework with PHP .
MVC signifie Model, View, Controller. Vous pouvez appeler ces approches comme bon vous semble - MVC, HMVC, MVP. L'essentiel est d'isoler les composants individuels de votre système. Le "Controller" récupère les données du "Model" et les envoie à "View", qui rend le HTML final. Vous avez déjà implémenté le "V" dans votre contacts.php
et "MC" dans votre contacts_class.php
. Vous avez donc isolé la vue du modèle et du contrôleur. Maintenant, vous pouvez facilement changer votre "Vue" en laissant les autres parties intactes.
Je ne vous suggère pas de suivre aveuglément le modèle MVC, MVP ou quoi que ce soit d'autre "MV". C'est une question de pertinence, d'efficacité et de goût.
L'application de site Web dynamique commune peut inclure des composants tels que:
- Le point d'entrée, disons
index.php
- Les bibliothèques / classes d'assistance
- Le routeur de requête
- Les modules, composants ou contrôleurs
- Le moteur de modèle ou peut-être des vues uniques
La véritable application Web peut inclure d'autres composants tels que des gestionnaires d'événements, des répartiteurs d'événements et des hooks, mais ce sont en fait des nuances. Eh bien, permettez-moi de le présenter comme je veux le présenter:
La routine d'opération de cadre commun comme suit:
- La demande du navigateur est envoyée directement à l'exécutable / script du point d'entrée (
index.php
).
- Le script du point d'entrée charge les bibliothèques d'assistance, les classes et effectue une initialisation supplémentaire de notre environnement de programmation.
- L'URL est transmise à l'instance de routeur de demande. Cette étape peut faire partie de l'étape 2.
- Le routeur de requête analyse l'URL et envoie l'opération à un composant, module ou contrôleur particulier.
- Le composant (ou contrôleur) traite la demande routée et envoie les données à la vue à restituer.
La structure de dossier de projet correspondante est illustrée dans le diagramme.
Je vous suggère d'étudier comment les autres cadres sont mis en œuvre. Les CMS / frameworks recommandés pour commencer sont CodeIgniter, OpenCart, Joomla 1.5 et Tango CMS.