Betik dili MVC uygulamaları için optimum dosya sistemi yapısı

3 Cevap php

Ben betik dilleri konuşurken Python, Perl gibi dillerin konuşma, ve (benim durumumda) PHP duyuyorum. CodeIgniter, Zend ve diğer eğlenceli MVC sistemleri çok kullveıktan sonra bir şey tek tek klasör yapısı (alongWithOTher things_like_that) üzerinde hemfikir görünüyor açıkça görülmektedir. Ben farklı yapı tasarımları yararları üzerinde herhangi bir iyi belgelerine bulamıyorum, çünkü bu gerçekten benim için bir sorun neden oluyor. Çoğu kişi sadece tasarım geliştirmeleri için bakılmaksızın that is what they use Çünkü bir tavsiye.

Ben hepimizin üzerinde anlaşabileceği umut şeylerden biri mevcut dosyalar için dosya sistemini kontrol sınıfları hakklı çok kötü bir uygulama olduğunda olmasıdır. Sınıflarımız file_exists bir baraj (biz yük her kütüphane için) çekler neden 5 olası yerlerden biri olmamalıdır.

Neyse, ben bu uygulamalar için planlama yaparken en iyi uygulamaları bulmak için karşılaştırabilirsiniz ki dizin yapılarını toplamaya çalışıyorum:

  1. OOP büyük olasılıkla MVC anlamına gelir dayanır
  2. Uluslararası kapsam ve destek dil dosyaları / çeviriler vardır
  3. Komple paketler bizim kod temeli içine düştü böylece modüller / eklentileri açık
  4. Açıkçası ne olup bittiğini tanımlamak ve verilen sınıflar için nereye bakacağını
  5. Aynı yapı kapalı çalışan birden fazla site için olası destek (aşağıda / site dizinleri bakınız)

Yani burada ben bugüne kadar ne var. Libs sadece ana kütüphane / sınıf dizini anlamına gelen bir terimdir ve hatta klasör yapısına bağlı olarak modelleri içerebilir unutmayın. Bu şeyler gerçekten bizim serverside kodu ile ilgili bir sonra düşünce ve değil gibi de, ben (JS / CSS / images) statik içerik her türlü hariç - hatta başka bir sunucuda olabilir! Önbelleklerini, dosya yükleme, lang, ve diğer tüm oluşturulan içerik ile aynı şey.

/controllers
/views
/models
/libs
/config
index.php

Bu tür (ayrıca şeyler organize tutmak için alt klasörler dahil) tek bir libs klasörüne herşeyi yığınları Zend çerçevesi hatırlatıyor. Sadece tek bir site için çalışıyor.


/libs
/site
    /controllers
    /views
    /models
    /config
index.php

Bu durum, yukarıdaki yapının bir çok site versiyonu olur.


/libs
/functions
/site
    /controllers
    /models
    /views
    /config
/site2
    /controllers
    /models
    /views
    /config
/modules
    /user
    	/controllers
    	/models
    	/views
index.php

Bu, birden çok site ve modüllerine damla sağlayacak versiyonu olacaktır. Modülleri kendi kendine iş mantığı, CRUD ve görüşlerini içerecek bir forum gibi MVC uygulamaları içerdiği olacaktır.

Yani herkes var bir perfect structure onlar payı olabilir veya bana iyi uzatmak mümkün tasarım seçiminde rehberlik?

3 Cevap

Açıklık ve sadelik pahasına - İşte her şeyi organize, iyi bir iş yapan bir aşırı karmaşık örnektir.

alt text

Özellikle symfony tavsiye, ama daha çok ben olduğunu düşünüyorum, bir yaklaşım değil pretty good (ama "mükemmel")

Için izin verir:

  • I18N
  • Çoklu ortamlar (dev, qa, eşya, vb)
  • Dış kütüphaneler
  • Eklentiler
  • Çoklu siteleri (aksi etki veya)
  • Toplu işlem (komut satırı görevler)
  • Birim testleri
  • Belgeleme
  • Günlüğü
  • Önbellekleme

Ayrıca, Symfony'nin iniş ve çıkışlar arasında, bir şey oldukça iyi önbelleğe yapar düşünüyorum. Ve demek istemiyorum template/view caching - Yani compilation-like caching.

Bir proje ilk kez çalıştırıldığında, symfony arda vurur üzerine uygulama, onlarca veya istek başına istatistik aramaların hatta yüzlerce kaldırır değil sadece, kütüphane sınıfları bir ana dosya oluşturur, ancak yorumların kaldırılması gibi diğer optimizasyonlar yapar.

Ayrıca, sizin ihtiyaçlarınıza uygun tweaked olabilir bütün bunlar, yapılandırma verileri ve özdevinimli_yükle bilgileri önbelleğe alır.

Biz evde inşa Tk-site forum motoru için son "multi-site" seçeneğine benzer bir yapı kullanın ve gerçekten iyi çalışıyor. Eğer ihtiyacınız varsa her zaman modülleri üzerinde kopyalayabilirsiniz, ve aynı zamanda Sitesi A Sitesi B etkilemeden biraz kendi modülü özelleştirme imkanı sağlar

Bu pratik uygulamalar içine almak, bu iki sitelerini kullanarak, hatta işletmeler, küçük bir bölümü kötü şey değil belki, tamamen ayrı ekipler bahsediyoruz. Biz de ortak modüller klasörü var, ama Sitenin modüller klasörüne aynı şeyi bir dosya adını verirseniz, bunun yerine bu sürümünü kullanır. Bu Kullanma ve __ özdevinimli_yükle (PHP varsayarak), sonra Site Devs gerçekten modülü kullanmak için nerede olduğunu endişelenmenize gerek yok.