Você levantou uma questão muito interessante e fundamental. A questão referente à arquitetura do projeto em larga escala e à organização da estrutura de pastas (secundária à arquitetura).
Hoje, a abordagem mais comum para a construção da arquitetura da estrutura do CMS é o uso do padrão MVC. Existem alguns bons artigos sobre como criar suas próprias estruturas MVC, uma delas é Construir uma estrutura MVC com PHP .
MVC significa Model, View, Controller. Você pode chamar essas abordagens como desejar - MVC, HMVC, MVP. A essência é isolar os componentes individuais do seu sistema. O "Controlador" recupera os dados do "Modelo" e os envia para "Visualizar", que renderiza o HTML final. Você já implementou o "V" no seu contacts.php
e "MC" no seu contacts_class.php
. Então você isolou a vista do modelo e do controlador. Agora você pode alterar facilmente sua "Visualização", deixando outras partes intactas.
Não estou sugerindo que você siga cegamente o padrão MVC, MVP ou qualquer outra coisa "MV". É uma questão de adequação, eficácia e sabor.
O aplicativo dinâmico de site comum pode incluir componentes como:
- O ponto de entrada, digamos
index.php
- As bibliotecas / classes auxiliares
- O roteador de solicitação
- Os módulos, componentes ou controladores
- O mecanismo do modelo ou talvez visualizações únicas
O aplicativo da Web real pode incluir outros componentes, como manipuladores de eventos, expedidores de eventos e ganchos, mas essas são, na verdade, nuances. Bem, deixe-me apresentar da maneira que quero apresentar:
A rotina de operação de estrutura comum da seguinte maneira:
- A solicitação do navegador é enviada diretamente para o ponto de entrada executável / script (
index.php
).
- O script do ponto de entrada carrega as bibliotecas auxiliares, classes e executa alguma inicialização adicional do nosso ambiente de programação.
- O URL é passado para a instância do roteador de solicitação. Esta etapa pode fazer parte da etapa 2.
- O roteador de solicitação analisa a URL e despacha a operação para um componente, módulo ou controlador específico.
- O componente (ou controlador) processa a solicitação roteada e envia os dados para a exibição a ser renderizada.
A estrutura da pasta do projeto correspondente é mostrada no diagrama.
Eu sugeriria que você investigasse como as outras estruturas são implementadas. Os CMS / framework recomendados para começar são CodeIgniter, OpenCart, Joomla 1.5 e Tango CMS.