Ви поставили дуже цікаве і принципове питання. Питання щодо масштабної архітектури проектів та організації структури папок (що є вторинним для архітектури).
На сьогодні найпоширенішим підходом до побудови рамкової архітектури CMS є використання шаблону MVC. Є кілька хороших статей про створення власних каркасів MVC, одна з них - Створення MVC Framework з PHP .
MVC означає Модель, Вид, Контролер. Ви можете називати ці підходи все, що завгодно - MVC, HMVC, MVP. Суть полягає у виділенні окремих компонентів вашої системи. "Контролер" отримує дані з "Моделі" та надсилає їх до "Перегляду", який надає остаточний HTML. Ви вже реалізували "V" у вашому contacts.php
та "MC" у своєму contacts_class.php
. Отже, ви виділили вигляд від моделі та контролера. Тепер ви можете легко змінити свій "Вид", залишивши недоторканими інші частини.
Я не пропоную вам сліпо слідувати схемі MVC, MVP або будь-якого іншого типу "MV". Це питання доцільності, ефективності та смаку.
Загальна динамічна програма для веб-сайтів може включати такі компоненти, як:
- Точка входу, скажімо
index.php
- Бібліотеки / класи-помічники
- Маршрутизатор запиту
- Модулі, компоненти або контролери
- Двигун шаблону або, можливо, окремі види
Справжня веб-програма може включати будь-які інші компоненти, такі як обробники подій, диспетчери подій та гачки, але це насправді нюанси. Ну, дозвольте представити його так, як я хочу його представити:
Загальна рамкова операція:
- Запит браузера надсилається безпосередньо до виконуваної точки вводу / script (
index.php
).
- Сценарій точки введення завантажує бібліотеки-помічники, класи та виконує деяку подальшу ініціалізацію нашого програмного середовища.
- URL передається екземпляру маршрутизатора запиту. Цей крок може бути частиною кроку 2.
- Маршрутизатор запиту аналізує URL-адресу та передає операцію певному компоненту, модулю чи контролеру.
- Компонент (або контролер) обробляє маршрутизований запит і передає дані в подання для надання.
Відповідна структура папок проекту показана на схемі.
Я б запропонував вам вивчити, як реалізуються інші рамки. Рекомендовані CMS / фреймворки для початку - CodeIgniter, OpenCart, Joomla 1.5 та Tango CMS.