MVC Proje Uygun Tasarım

7 Cevap php

Ben şimdi bir kaç ay boyunca Kohana kullanarak ve hala kodu / sunum / db-tabaka organize MVC tarzı nispeten yeni duyuyorum oldum. , Bir kontrol oluşturmak bir görünüm oluşturmak ve model aracılığıyla bir db ile etkileşim nasıl belgelerine bol varken ne yazık ki, ben temiz uğraşmak pek çok kaynak buldum ve kalkınma modellerini önerdi ettik.

Bana hızlı bir örnek vereyim:

Ben ... O çok daha fazla yapmak veya zaman bir yenisini yapmak gerekir olmalıdır eğer ben emin değilim çünkü benim son projesi, bir denetleyici vardır. Yeni bir denetleyici gerektiğinde tam olarak nasıl yeni bir model gerektiğinde birlikte belirler?

7 Cevap

Ben ilk resource oriented architecture bakmak için size öneririm. Bu size kodu nasıl organize herhangi bir doğrudan kurallar vermeyecektir. Yeni bir denetleyicisi oluşturmak için olsun ya da olmasın karar söz konusu olduğunda Ancak kaynaklar, yaşam açısından düşünme zaman daha kolaydır. Eğer sisteminizde bir kaynak tanımlamak için yönetmek sonra, genellikle bunun için bir model artı bir denetleyicisi oluşturmak için iyi bir şey - bu sadece bir kural olduğunu, rağmen.

Bazı ek puan:

  • kaynak aramak ve bunların her biri için bir model ve bir denetleyici (başparmak kuralı) oluşturmak
  • yok kalıcı kaynaklar için modeller oluşturmak için korkmayın
  • "sıhhi tesisat" ya da iş alanı için kullanıcının "kablolama" olarak kontrolörleri hakkında düşünmek - rolleri kullanıcı isteklerini işlemek ve onlara geri cevabını iletmek için - mümkün olduğunca ince tutmak

Aşağıdaki gibi kural başparmak: Ben "öğesi" benim app yeni bir tür tanımlamak zaman. yönetmek gerekiyor, ben bu soruları kendime soruyorum:

(1) Bu tür öğeler kalıcı olmalı?

(2) Bu madde birçok örnekleri orada olacak mı?

Her iki sorunun cevabı olumlu ise ben konusu kalemin (MVC çerçevesi terminoloji bağlı olarak ya da model-element veya etki alanı sınıf,) bir model olması gerektiğini düşünmekteyiz. (Büyük olasılıkla sizin çerçeve sizin için bir varsayılan denetleyici üretebilirsiniz), oluşturmak, almak, güncelleme, silme: Ben yeni bir model elemanı tanımladığınızda ben de dört temel faaliyetleri destekleyecektir bunun için bir denetleyici tanımlar.

Sen Martin Fowler bir kopyasını almak isteyebilirsiniz 'Enterprise Application Architecture Kalıpları.' Web Tanıtım bölümü Ön Kontrol odaklı çerçevesini kullanarak MVC çerçeveler mevcut dalgasının herhangi gibi, kodunuzu yapısı hakkında kapsamlı konuşuyor.

Ben net olarak tanımlanmış bir fonksiyonu veya fonksiyonları set küçük kontrolörleri gibi. Bu genellikle bir sayfa başına denetleyicisi (veya benzer sayfalar set) anlamına gelir. Benim Kohana site, CSSMySite Ben, blog, temas, css ve sonrası kontrolörleri hakkında sahip.

All the about controller does is set the template. The blog controller interacts with the blog model to list multiple posts from the database. The post controller interacts with the blog model to display one post from the database.

Ben kalıcı (blog) veya birden çok kez (bir açılan kutu için devletlerin listesi) kullanılan veri var her zaman, bu modele gider. Bu kontrolör modeli bire-bir eşleme olmak zorunda değildir bu yüzden modeller farklı kontrolörleri tarafından erişilebilir.

Belki iyi MVC programlama öğrenmek için iyi bir yol biraz vakit geçirmek için Ruby-on-Raylar olduğunu. Ben bir süre geri rayları kullanmaya başladı, ve dolaylı bir sonucu olarak Ben şimdi MVC çok iyi bir anlayışa sahip inanıyorum. Ben MVC timsali olarak raylar görüntüleyebilirsiniz. En azından, bu Bindireceğini ne diyorsun ... MVC eğlenceli bir öğrenme yolu olabilir?

İşte benim Kohana app yapıyor ne bir örnektir.

Ben bir 'son haberler' bölümüne gerekli, bu yüzden bir denetleyici, model ve 'haber' başlıklı görünüm ayarlayabilirsiniz.

Benim haber kontrol index(), feed() ve media_releases() yöntemleri vardı.

Benim modelim MySQL veritabanı benim haber veri almak db sorguları oluşuyordu.

Ve benim görüşüm sadece bazı <?php echo $title; ?> ile HTML bir sürü ve gibidir.

Eğer küresel veritabanı meta levaraging işleri genel sistemlerini tanımlamak değil bir nedeni var mı? Genellikle basit verilere erişmek ve görüntülemek için her bir gereksiz fazlalık herhangi bir kod yazma, gibi geliyor bana.