MVC büyük web siteleri, bir denetleyici ... veya birçok kullanabilir?

6 Cevap php

Ben oldukça büyük bir site var, ve ben (tek kodlayıcı değilim) onu yönetmek için en zaman verimli bir yol arıyorum.

Ben sırayla tüm kodumu tutmak için (i bir çerçeve kullanmak istemiyorum) çok basit bir MVC yapısını hazırlamak için çalışıyorum.

Büyük bir site için, tüm sayfaları işlemek için tek bir denetleyici olması daha iyidir, ya da onları bölmek daha iyi ve daha kolay?

Sadece bir değilse, ne olmayan bir çerçeve denetleyicisi iyi bir örnektir?

6 Cevap

Ben farklı kontrolörler içine herhangi bir mantıksal bölümleri bölmek - tüm statik sayfalar ise, o zaman hepsi aynı 'statik sayfa' denetleyicisi ile o kadar hizmet vermektedir.

Bazı statik sayfalar, bir SSS sayfası (ya da bölümü) varsa, bir ürün listesi - Her farklı bölüm için bir denetleyici kullanın. Yani statik sayfalar tek bir kontrolör tarafından düz dosyalar veya bir veritabanından çekilen olacağını, SSS sayfalarına başka bir kontrolör tarafından bir SSS tablodan oluşturulmuş olacak, ürün ve bilgi bunun için kaynak ne olursa olsun tarafından oluşturulmuş olacak.

Bir sayfa oluşturulur yolu veya veri erişilen her zaman farklı bir denetleyicisi kullanın.

Tabii ki, sınıf mirası any kontrolör tarafından gerekli kodu ile taban sınıf oluşturmak için kullanılabilir.

Olmayan bir çerçeve kontrolörü tarafından ne demek emin değilim - Ben Zend (gasp) 'Çerçeve', MVC deseni ve hatta denetleyicisi kendisini çıkış ediyorum, ayrı çerçevenin kalanından kullanılabilir.

Ben bir site / uygulama belirli bir bölümüne kendi sorumluluk dayalı denetleyicileri bölmek eğilimindedir. Bu çok daha kolay kodunu korumak yapar. Ayrıca, modüller (klasörler) içinde ben grup denetleyicileri (ve görünümleri, modeller). Burada üzerinde çalışıyorum geçerli projede bir örnek var:

  • Blog
    • Mesajlar
    • Yorumlar
    • Kategoriler
    • Ayarlar
      • Mesajlar
      • Kullanıcılar
      • Bir site daha karmaşık, daha modülleri I kullanın. Benim modülleri çoğu sadece bir 'Dizin' denetleyicisi içeren rağmen, sağladıkları örgüt gibi yapın.

        Sonra doğru modül / denetleyici / eylem REST stil URI eşleştiren bir yönlendirici (ön denetleyici) kullanın. Ör: mysite.com/blog/posts/view/7 Controller_Mesajlar diyebileceğim :: view (7) "blog" modülü. Modülleri kullanmanın bir yararı Ben modülleri yoktu, daha belirli URI'lere sahip olabilirsiniz. Ben bu özel bir rota belirleyerek destekleyen bir yönlendirici kullanılarak giderildiği olabilir varsayalım, ama bu çok düşkün değilim rağmen.

        Diğer birçok şey gibi, bir geliştirici olarak rahat konum ne aşağı kaynar, ama biz muhtemelen daha organizasyon sahip olduğunu kabul edebilir, bu kadar uzun üzerinde karmaşık şeyler yok gibi, off daha iyi.

        Bir kenara hızlı olarak, ben size bir çerçeve kullanarak içine bakmak tavsiye ederim. Eğer ben de bu kaçınılması gibi, zaten orada olanlardan birini kullanmak istemiyorsanız anlıyorum. Ben geçen yıl için beni çok iyi hizmet ettiği benim kendi yazma sona erdi. Bu büyük bir öğrenme deneyimi oldu ve sadece I istediğini / ihtiyacını içerir. Söyleniyor, sen Kohana ve CakePHP içine bakmak isteyebilirsiniz - onlar IMO aşırı şişirilmiş değiliz ve kendi yazmaya karar gerektiğini onlar kesinlikle size zaman kazandıracak.

Genelde insanlar işlevsellik belirli alanlara odaklanmış denetleyicileri içine kontrolörleri ayrıldı.

Sonra onlar hepimizin önünde bir "ön-denetleyici" sopa, böylece uygulamaya tek bir giriş noktası var. Ön-kontrolörünün tek işi, uygun denetleyiciye rota gelen istekleri etmektir.

Zend_Controller bileşeni kurmak şekilde bakmak. İhtiyacınız olan her şeyi sağlayabilir ve tam Zend Framework içine almadan kullanmak için özgürsünüz.

Bu diğer kısımlar nasıl çalışacağını bağlıdır. Eğer sadece bir model dosyası varsa, o zaman muhtemelen denetleyicisi bölme değmez. Eğer bölüme yanı sıra kontrolör modeli kadar bölünmüş olabilir, o zaman bunu.

Ancak, sık sık onları ayırmak için modelleri arasında çok fazla örtüşme var olduğunu bulmak. Eğer yazı için bir model olabilir, ama diğer sayfalarda bir kenar çubuğu en iyi 20 makaleleri görüntülemek istiyorsanız, bu kodu makale modelinde olmalıdır - ve her sayfada ki ihtiyacımız olacak.

Dürüst olsa, bunu yapmak için tek yolu denemek ve görmek olduğunu. Tek bir giriş noktası ile başlayın, ve çok alırsa, hantal, küçük parçalar halinde refactor.

Bir yönlendirici / memuru, birçok denetleyicileri benim tavsiyem olacaktır. Kontrolörler farklılaşan işlevleri anlamına gelir, URL'leri haritasına gerek. Bir denetleyici her kullanımdan davayı gerçekleştirmek için farklı hizmetler ile işbirliği yapacak, böylece app kullanım durumları bir avuç daha varsa tüm app için bir kontrolör çok hantal olacak.

Kendi kendine yapılan çerçeve yararlanarak planı beri, ben ff okumanızı öneririz: sırayla MVC framework ile tanımak.

http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/