Anda mengajukan pertanyaan yang sangat menarik dan mendasar. Pertanyaan mengenai arsitektur proyek skala besar dan organisasi struktur folder (yang merupakan sekunder dari arsitektur).
Saat ini pendekatan yang paling umum untuk membangun arsitektur kerangka CMS adalah penggunaan pola MVC. Ada beberapa artikel bagus tentang membangun kerangka kerja MVC Anda sendiri, salah satunya adalah Membangun Kerangka MVC dengan PHP .
MVC adalah singkatan dari Model, View, Controller. Anda dapat menyebut pendekatan ini apa pun yang Anda suka - MVC, HMVC, MVP. Intinya adalah mengisolasi masing-masing komponen sistem Anda. "Controller" mengambil data dari "Model" dan mengirimkannya ke "View", yang menjadikan HTML final. Anda telah menerapkan "V" di Anda contacts.php
dan "MC" di contacts_class.php
. Jadi, Anda telah mengisolasi tampilan dari model dan pengontrol. Sekarang Anda dapat dengan mudah mengubah "Tampilan" Anda dan membiarkan bagian lain tetap utuh.
Saya tidak menyarankan Anda untuk secara membabi buta mengikuti pola MVC, MVP atau apa pun "MV" lainnya. Ini adalah masalah kesesuaian, kemanjuran dan rasa.
Aplikasi situs web dinamis umum dapat mencakup komponen-komponen seperti:
- Titik masuknya, katakanlah
index.php
- Perpustakaan / kelas pembantu
- Router permintaan
- Modul, komponen, atau pengontrol
- Mesin templat atau mungkin tampilan tunggal
Aplikasi web yang sebenarnya dapat mencakup komponen lain seperti penangan acara, pengirim acara, dan pengait, tetapi ini sebenarnya adalah nuansa. Baiklah, izinkan saya menyajikannya sebagaimana saya ingin menyajikannya:
Rutin operasi operasi umum sebagai berikut:
- Permintaan browser dikirim langsung ke executable / script titik masuk (
index.php
).
- Script entry point memuat pustaka helper, kelas dan melakukan beberapa inisialisasi lebih lanjut dari lingkungan pemrograman kami.
- URL diteruskan ke instance router permintaan. Langkah ini dapat menjadi bagian dari langkah 2.
- Router permintaan mem-parsing URL dan mengirimkan operasi ke komponen, modul, atau pengontrol tertentu.
- Komponen (atau pengontrol) memproses permintaan yang dirutekan dan mengirimkan data ke tampilan untuk diberikan.
Struktur folder proyek yang sesuai ditunjukkan pada diagram.
Saya akan menyarankan Anda untuk menyelidiki bagaimana kerangka kerja lainnya diterapkan. CMS / framework yang direkomendasikan untuk memulai adalah CodeIgniter, OpenCart, Joomla 1.5 dan Tango CMS.