Çok ilginç ve temel bir soru sordun. Büyük ölçekli proje mimarisi ve klasör yapısı organizasyonu ile ilgili soru (mimariye ikincildir).
Bugün, CMS çerçeve mimarisini oluşturmaya yönelik en yaygın yaklaşım, MVC şablonunun kullanılmasıdır. Kendi MVC çerçevelerinizi oluşturma hakkında bazı iyi makaleler var, bunlardan biri PHP ile bir MVC Çerçeve Oluşturma .
MVC, Model, Görünüm ve Kontrolör anlamına gelir. Bu yaklaşımları istediğiniz gibi çağırabilirsiniz - MVC, HMVC, MVP. Temel, sisteminizin ayrı bileşenlerini izole etmektir. "Kontrolör", verileri "Model" den alır ve son HTML'yi veren "Görünüm" e gönderir. "V" yi kendi contacts.php
dilinizde ve "MC" yi kendi dilinizde uyguladınız contacts_class.php
. Yani görünümü modelden ve kontrol cihazından izole ettiniz. Artık diğer parçaları sağlam bırakarak "Görünümünüzü" kolayca değiştirebilirsiniz.
MVC'yi, MVP'yi veya başka bir "MV" modelini körü körüne takip etmenizi önermiyorum. Uygunluk, etkinlik ve lezzet meselesidir.
Ortak dinamik web sitesi uygulaması, aşağıdaki gibi bileşenleri içerebilir:
- Giriş noktası
index.php
- Yardımcı kütüphaneler / sınıflar
- İstek yönlendirici
- Modüller, bileşenler veya kontrolörler
- Şablon motoru veya belki de tek görünüm
Gerçek web uygulaması, olay işleyicileri, olay göndericileri ve kancalar gibi diğer bileşenleri içerebilir, ancak bunlar aslında nüanslardır. Peki, onu sunmak istediğim şekilde sunmama izin ver:
Aşağıdaki gibi ortak çerçeve operasyon rutini:
- Tarayıcı isteği doğrudan çalıştırılabilir / script (
index.php
) giriş noktasına gönderilir .
- Giriş noktası betiği yardımcı kitaplıkları yükler, sınıflar ve programlama ortamımızın bazı başlangıçlarını gerçekleştirir.
- URL, istek yönlendirici örneğine iletilir. Bu adım, 2. adımın bir parçası olabilir.
- İstek yönlendirici URL'yi ayrıştırır ve işlemi belirli bir bileşene, modüle veya denetleyiciye gönderir.
- Bileşen (veya denetleyici) yönlendirilen isteği işler ve verileri oluşturulacak görünüme gönderir.
Karşılık gelen proje klasörü yapısı şemada gösterilmiştir.
Diğer çerçevelerin nasıl uygulandığını araştırmanızı öneririm. Önerilen CMS / çerçeveler, CodeIgniter, OpenCart, Joomla 1.5 ve Tango CMS'dir.