Planteaste una pregunta muy interesante y fundamental. La pregunta sobre la arquitectura del proyecto a gran escala y la organización de la estructura de carpetas (que es secundaria a la arquitectura).
Hoy, el enfoque más común para construir la arquitectura del marco CMS es el uso del patrón MVC. Hay algunos buenos artículos sobre cómo crear sus propios frameworks MVC, uno de ellos es Build an MVC Framework with PHP .
MVC significa Modelo, Vista, Controlador. Puede llamar a estos enfoques lo que quiera: MVC, HMVC, MVP. La esencia es aislar los componentes individuales de su sistema. El "Controlador" recupera los datos del "Modelo" y los envía a "Ver", que representa el HTML final. Ya ha implementado la "V" en su contacts.php
y "MC" en su contacts_class.php
. Entonces ha aislado la vista del modelo y el controlador. Ahora puede cambiar fácilmente su "Vista" dejando otras partes intactas.
No te estoy sugiriendo que sigas ciegamente el MVC, MVP o cualquier otro patrón "MV". Es cuestión de adecuación, eficacia y sabor.
La aplicación de sitio web dinámico común puede incluir componentes como:
- El punto de entrada, digamos
index.php
- Las bibliotecas / clases auxiliares
- El enrutador de solicitud
- Los módulos, componentes o controladores.
- El motor de plantillas o quizás vistas individuales
La aplicación web real puede incluir cualquier otro componente como controladores de eventos, despachadores de eventos y enlaces, pero de hecho son matices. Bueno, permítanme presentarlo de la forma en que quiero presentarlo:
La rutina de operación de marco común de la siguiente manera:
- La solicitud del navegador se envía directamente al punto de entrada ejecutable / script (
index.php
).
- El script de punto de entrada carga las bibliotecas auxiliares, las clases y realiza una inicialización adicional de nuestro entorno de programación.
- La URL se pasa a la instancia del enrutador de solicitud. Este paso puede ser parte del paso 2.
- El enrutador de solicitud analiza la URL y envía la operación a un componente, módulo o controlador en particular.
- El componente (o controlador) procesa la solicitud enrutada y envía los datos a la vista que se representará.
La estructura de carpetas del proyecto correspondiente se muestra en el diagrama.
Le sugiero que investigue cómo se implementan los otros marcos. Los CMS / frameworks recomendados para comenzar son CodeIgniter, OpenCart, Joomla 1.5 y Tango CMS.