1) Ben MVC bazı şeyler için sınıfları basit bir homebrew kümesi kullanmak, ve (o Zend benzer bir ön denetleyicisi tarzı, var) eylem ve görünüm adları denetçi isimlerini ilgilidir. Genel bir web sitesi için, en bir ev sayfası, gizlilik politikası, iletişim sayfası ve bir hakkında sayfası vardır varsayalım. Gerçekten bütün bunlar için ayrı denetleyicileri yapmak istemiyorum, bu yüzden gibi işlev adları, benim IndexController
onları içeri sokarım actionIndex()
, actionPrivacy()
, actionContact()
ve actionAbout()
.
Benim İzlenme dizin içinde ben her eylem ile ilişkili şablonları bir dizin var, bununla birlikte gitmek için. Dilerseniz 1 belirleyebilirsiniz, ancak varsayılan olarak, herhangi bir eylem otomatik, bir ilişkili şablon arar. Yani actionPrivacy()
index/privacy.php
, actionContact()
index/contact.php
, vb cekti bakmak için bir şablon dosyasını arar
Tabii ki, bu da URL'ler ile ilgilidir. Yani url http://www.example.com/index/about
Hakkında sayfa şablonu yüklemek hangi, actionAbout()
aday olacağını çarptı. Hakkında sayfa tamamen statik içerik olduğundan, benim actionAbout()
Ön Kontrol görmek ve çalıştırmak için bir kamusal eylem sağlamak dışında kesinlikle hiçbir şey yok.
Yani sorunun çekirdek cevaplamak için, tek bir denetleyici içine birden fazla "sayfalar" koymak, ve benim amaçlar için çalışıyor. Denetleyici başına bir modeli ben çok daha iyi bir durumda olan bir uygulamayı uygun gibi görünüyor, ben Web MVC ile çalışırken takip etmeye sanmıyorum bir teoridir.
2) Bunun için, birden çok denetleyicileri olurdu. Eğer önermek onlar şablonları aynı (aynı veya kısımlarını) kullanmak olamazdı hiçbir neden yok, ancak ben yukarıdaki kullanmak aynı yöntemleri izleyerek, ben, /admin/dashboard
ve /account/dashboard
olurdu.
Ben bir kullanıcı gazillion farklı olsaydı, herşey daha genel yapmak ve sadece tek bir denetleyici kullanmak ve yükleme işlemek için mod_rewrite kuralı var herhalde. Muhtemelen pano nasıl işlevsel karmaşık bağlıdır ve ne hesabı kurmak gibi olacaktır.
3) Ben MVC herhangi bir katmanına doğrudan uygulamak ve hala temiz, esnek ve verimli olması için REZİL işlevsellik zor. Ben herhangi bir nesne çağırıyoruz, ve ben CRUD gerek herhangi bir nesne uzatabilirsiniz hangi bir temel nesne sınıfı olabilir bir hizmet katmanı içine soyut REZİL işlevselliği dışarı istiyorum.
Ben CRUD için orada PHP ORM çerçeveler bazı kullanan öneririm. Onlar güzel bir uygulama alma güçlük bir sürü ile yapabilirsiniz.
Kullanıcı denetleyicisi karşı giriş kontrolörü açısından, ben bu uygulama etki bağlıdır varsayalım. Programlama benim tarzı ile, bir kullanıcı modeli etki alanı içinde basit bir operasyon olarak "oturum açarak" düşünmek eğiliminde olacaktır, ve böylelikle, bir kullanıcı denetleyici içinde bunun için tek bir operasyon var. Daha net olmak gerekirse, ben UserController
, bir kullanıcı modeli örneğini ve model üzerinde bir giriş rutin çağırır olurdu. Ben doğru yolu olması gerekiyordu emin ne için diyemedi çünkü ben, bu doğru yol olduğunu söyleyemem. Bu bağlamda meselesi.
4) Bu rotadan hakkında haklısın. Kolayca app / Kamp yapmak istediği her şeyi ele bir denetleyici oluşturabilirsiniz. Ancak, bu bir bakım kabus olacağını kabul düşünüyorum. Ben hala iç PHP uygulaması sadece varsayabiliriz ne bir yurtdışı ekibi tarafından yapılan bir pazar araştırma şirketi, benim son iş düşünmeye jibbly-jibblies az-hiç eğitim oldu olsun. Biz bütün siteyi ele 10.000 satırı dosyaları bahsediyoruz. Bu korumak için mümkün değildi.
Yani, aşağı iş etki alanları içine app / site kırmak önermek ve buna dayanarak denetleyicileri oluşturmak istiyorum. App temel kavramlarını anlamaya ve oradan gitmek.
Example
Belli ki kaya manatees çünkü manatelere hakkında bir web sitesi vardı diyelim. Ben, kullanıcı hesabı yönetimi, bir forum, resim galerisi, ve belki (manatees hakkında son bilim ile) bir araştırma belgesi, malzeme alanı (temas, vb) bazı normal bir site sayfaları istediğimiz. Oldukça basit, ve bunu bir sürü statik olurdu, ama arıza görmeye başlayabilirsiniz.
IndexController
- sayfa, gizlilik politikası, genel statik içeriği hakkında yönetir.
UserController
- in / out, tercihlerini kaydetmek, hesap oluşturma kolları
PictureController
- görüntü resimleri, yüklenenler işlemek
ForumController
- muhtemelen çok, ben burada çok işlevi gerek yok demek olur harici forum, entegre denemek istiyorum.
LibraryController
- son haber ve araştırma gösteri listeleri
HugAManateeController
- HTTP üzerinden gerçek zamanlı sanal ineği kucaklıyor
Bu muhtemelen en az bir temel ayrılmasını sağlar. Eğer bir kontrolör son derece büyük hale bulursanız, muhtemelen ayrı denetleyicileri içine iş alanı yıkmak zamanı.
Her proje için farklı olacak, bu yüzden biraz planlama sahip olacak mimari yapısının ne tür doğru uzun bir yol gidiyor.
Bu uygulama devlet sahip bir MVC modeli oldukça farklı olduğu gibi Web MVC, çok subjektif alabilirsiniz. Ben web uygulamaları ile uğraşırken Kontrolörleri dışında önemli işlevselliğini tutmaya çalışın. Ben onlara, birkaç nesne veya model örneğini eylem atılıyor dayalı yöntemleri birkaç çalıştırın ve bitti kez Görünümüne geçmek için bazı Görünüm verileri toplamak istiyorum. Daha basit, ve ben uygulamanın devletin temsilcisi olması gereken modellerin içine temel iş mantığı, koydu.
Umut olur.