Php MVC hakkında hızlı soru

4 Cevap php

Şu anda, mevcut bir kod tabanı yeniden üzerinde çalışıyorum. Ben php çerçeveler yeniyim, ama MVC nasıl çalıştığını genel olarak biliyorum.

Şu anda, bir denetleyici dosyası, bir model dosyası, ve otuz görünümü dosyaları var.

Her model tablo uygun olmalıdır?

Her görünüm, bir html sayfasına karşılık gerekir?

Ne denetleyici hakkında? Nasıl daha organize koduna bu bin hat canavar kesebilirsiniz.

Teşekkürler.

4 Cevap

Her model tablo uygun olmalıdır?

Hayır bir model genelde birden fazla kaynaktan veri inşa edilmiştir. Muhtemelen benzerlik sürü olmaktan orada sona erecek olsa bile fiziksel veritabanı yapısı ipe açısından düşünmeyin.

Her görünüm, bir html sayfasına karşılık gerekir?

Basmakalıp ses, ama her görünüm bir görünüme uygun olmalıdır değil. Ben bir "sayfa" derken tam olarak ne olduğundan emin değilim.

Belki de bir örnek yararlı olacaktır. Bir kullanıcı kaydı sayfasını düşünün. Modeli Kullanıcı ve gibi alanları içerebilir:

  • Başlık
  • Adları verilen
  • Soyadı
  • Doğum tarihi
  • Adı
  • Adres (es)
  • E-posta adresi
  • Telefon numarası (ler)
  • vb

Şimdi, bu veriler birden fazla tablo olabilir. Örneğin: Parti, Kişi, İletişim ve Adres.

Muhtemelen birkaç görüş var olacaktır:

  • Hakkında sayfası
  • (Yeni kayıt ve muhtemelen düzenleme ayrıntıları yanı sıra hataları için kullanılır) Form sayfası;
  • Başarı sayfa;
  • Arıza sayfası.

Tüm süreçler birbiriyle ilişkili olarak Genellikle bu tek bir kontrolör tarafından ele alınacaktır.

Genellikle ağırlıklı (genellikle diğer tabloları içine yabancı anahtarlar ile, modeller genel olarak diğer modelleri başvurmak gerekir çünkü) bir tablodaki saklanmalıdır - Her modelin bir mantıksal veri nesnesine uygun olmalıdır.

Her görünümü veri görüntüleme mantıklı bir şekilde uygun olmalıdır (üzerinde stackoverflow örneğin, rozetleri sayfaları listesinde, etiketleri sayfaları vb listesi için bir görünüm için bir görünüm umarım yoktur).

30 manzarası var ise, umarım mantıklı bulabilirsiniz - Her denetleyici nerede too big dosya yönetilemez hale geliyor hattıdır (çok büyük olmamalıdır manzaralı bir mantıksal gruplandırma, uygun olmalıdır yolu grup onlara) 3 kontrolörleri diyelim içine etmek.

What about the controller? How can I break this thousand line monster into more organized code.

CakePHP çerçevesi ve nasıl büyük modeller, kontrolörler, ve çok sayıda görüşlerin sorunu çözer bakabilirsiniz. Ben oldukça zarif buluyorum. Kompleks modeller olabilir behaviours. Büyük kontrolörleri components ayrılabilir. elements ayrılır ortak bit yerken ve çok sayıda izleme, layouts ile gruplandırılmış. Bu ilk bakışta karmaşık ve korkutucu gelebilir, ama bunu kullanmak için deneyin bir kez, gerçekten yerine düşer.

Should every model correspond to a table?

O zorunda değil ama genellikle iş mantığı karmaşıklığına bağlı olacaktır.

Eğer varolan bir uygulama üstlenmeden konum beri, modeli, diğer katmanları tarafından nasıl kullanıldığını düşünüyorum. MVC, model bağımlılık yığının altında yer almaktadır.

Nasıl görünümü modeli erişecek? Nasıl kontrolör, bunu değiştirmek olacak? Nasıl modeli doldurulur olacak?

Should every view correspond to an html page?

Yine, zorunda değil ama genellikle olacak.

What about the controller? How can I break this thousand line monster into more organized code.

Ortak bir strateji ön kontrolör desen kullanıyor. Ama sonra delegelerin daha özel denetleyicileri - HTTP istekleri, uygulama başlatma ve site genelindeki mantık (sadece bin hat canavar şu anda yapıyor gibi) ile ön kontrolör fırsatlar.

Bu uzman kontrolörler kullandığı modellerde, site sayfa yapısı, ya da mantıklı görünüyor başka bir şey göre gruplandırılmış olabilir. Daha sonra modeli ile etkileşim ve görüntülemek için bir görünümü seçin.

Son olarak, Leonid gibi çerçeveler +1 önerdi. Eğer birini kullanarak sonuna kadar bile, orada kontrolör desen bazı büyük uygulamaları vardır.

Umut olur.