Bu büyük bir PHP sitesi için iyi bir düzen var mı?

1 Cevap

Ben asla kullanılmış gibi tüm MVC tasarım beni biraz karıştırır. Aşağıda benim şimdiki projenin genel düzeni ...

Hesap klasörü benim kullanıcı sistemi için ikonların tüm çekirdek dosyaları tutar

root/account/login.php
root/account/home.php
root/account/logout.php
root/account/settings.php

Sonra her "modülü" için ayrı bir klasör var (forumlar, bloglar, vb)

root/forums/ root/blogs/
root/mail/

Daha sonra herhangi bir fonksiyonları ve sınıfları ve config dosyalarını böyle bir içerir dizininden yüklenir

root/includes/classes/ root/includes/bootstrap.php //this file autoloads the class files needed and ensures a DB connection sitewide

"Iş" Çoğu sınıf dosyaları içinde yapılır. Açıkçası ben yüzlerce dosya ve birkaç diğer klasörleri dışında kalan (css / js / images /)

Ben merak ediyorum, bu bir büyük ölçekli site için iyi bir tasarım gibi görünüyor? Bu MVC olduğunu kabul edilmez? Ve Çerçeve bana bakın lütfen.

1 Cevap

Mutlaka MVC kullandığınız gibi Hayır, görünmüyor. Onların gerçek MVC isimleri tarafından gruplandırılmış çoğu zaman:

Ben size bölme dosyaları nasıl tahmin etmek olsaydı, sizin yapısı bu gibi görünebilir

views/
  account/
    login.php
    home.php
    settings.php
    logout.php
controllers/  #maybe what you call modules
  account.php
  blog.php
  mail.php
models/       #maybe what you call "classes" are models
  account.php
  blog_entry.php
  comment.php

Sadece hızlı bir referans:

  • M odel = belirli bir nesne / fonksiyonu için veritabanı ile tüm etkileşimi kolları ve normal bir veritabanı kaydında 1-1 oranını (Ve tabii diğer modellere ilişkileri vardır) sınıfına sahip.
  • V = iew kullanıcıya içerik görüntüleme Kolları. Hiçbir iş kodu (veya çok az) bu dosyalarda yer alan olmalıdır. Veri tabanı erişimi, örneğin görünümde gerçekleştirilmemelidir.
  • C ontrol = kullanıcı isteklerini alır Senaryo, hangi modelleri yer almak için, (bireysel modelleri mantıklı kadar kapalı geçen) gerekli eylemi gerçekleştirir karar verir, sonra kullanıcıya göstermek için verileri hazırlar ve gösterim için olduğu görünümüne gönderir.