Profesyonel düzeyde programlama için en iyi uygulama olarak MVC?

5 Cevap php

Uzun zaman lurker, ilk kez posteri ...

Ben neredeyse bir profesyonel sınıf PHP programcısı kendimi aramak ve yeniden kullanımı, çeşitli projelerde bir sürü kod olurdu noktada ben şimdi. Da gerektiği gibi, ben kullanımı ile MVC modeli çalıştık ve sonuç olarak ben tüm nasıl çalıştığını içine son zamanlarda çok araştırma yaptık Açık Kaynak paketleri bir sürü yüzden onları daha iyi düzenleyebilirsiniz.

Bu noktada, ben (bir öğretici) bir çıplak kemikleri MVC çerçevesi alarak ve benim gelecek programlama işleri için gerekli olarak uzanan düşünüyorum.

Benim soru sunum katmanı ayrılmış hemen hemen tüm uygulama mantığı ile MVC modeli sayfasında gerekli ayarları gibi işlev değişkenleri kodlama ile iyi yapılandırılmış bir cepten web sitesi üzerinde en iyi uygulama olarak kabul edilir olup olmadığıdır.

Ben kodlama esneklik örneğin istediğiniz zaman ya da ben sorunları çalıştırmak olacaktır

  • using something like PHPthumb for a gallery where I want different output sizes on different pages and currently set parameters in the head of the page
  • x ve y alanlarına alanları ile bir geri bildirim formu ile bir iletişim formu - Bu sayfanın baş belirlenen bazı parametreler ile tekrar 2 differrent modelleri ziyade genel bir form sınıfı gerektirir
  • Bazı ob_start gerektiren sayfalar () ve ob_flush () ama diğerleri değil?

Kendi çerçeve oluşturmak için değil bana söyleme Lütfen - Doğrusu her biraz ben hakkında hiçbir şey bilmek kodu bir levha kullanmak daha nasıl çalıştığını bilmek istiyorum - Ben bu yolu gitmiş kişilerin görüşüne gerçekten ilgileniyorum ve Her gün siteleri oluşturmak. 1 index.php sayfa ve ayrı dosyalar aksine bir siteye düz (ama iyi yapılandırılmış) OOP ve sayfaların grup üzerinde bu gerçek artıları ve eksileri nelerdir.

Cheers, Niggles

5 Cevap

Ben bunu tavsiye istemiyorum demek biliyorum, ama kendi yazmayın. Ben hiç de çalıştığım her iş de yaptık ilk şey mevcut bazı kod veya çerçeve, genellikle ticari ama son derece modifiye aldı ve bunu sürdürmek başlanmıştır. Sen nadiren kendi yazmak için seçeneği olsun, ve bunu yaparken kötü bir fikir olacak. Bu, zor pahalı ve başkası zaten yazmak olasıdır daha iyi bir MVC PHP çerçeve yazmıştır.

phpframeworks.com, bunlardan birini seçin listelenen düzinelerce vardır. Hepsi MVC çok uzun çerçeveler yazma oldum, ve kendi çerçevelerini rafine ve kullanıcı girişi dinleme aylar veya yıllar geçirdim en azından sizin kadar zeki bir düzine insan tarafından yapılmaktadır konum - Bu hangi bir önemi yoktur.

Bir hobi olarak, kendi zamanında, kendi yazmak isterseniz, dedi, bu yüzden tüm yollarla sonra, patronun parasını harcıyorsun değil ki hepsi. MVC yorumların büyük bir çeşitlilik var. Bazı çerçeveler temelde şablon olarak görünümleri görüntülemek. Ben şahsen bu kadar uzun amacı olduğu gibi ekran, istediğiniz gibi oraya kadar çiğ PHP atabilir düşünüyorum ve işlevleri içine paylaşılan kodunu damıtılması gibi olağan akıllı şeyler yapmak. Bazı çerçeveler (IMO'nun ait) modellerinde neredeyse hiçbir iş mantığı var ama çok ağır denetleyicileri var. Yapabileceğiniz en iyi şey, diğer çerçeveler denemek ve görmek nasıl çalışır ve hangi iyi gibi, ve değişmiş görmek istiyorum ne karar olduğunu. Sonra, kendi bunu değiştirmek için yola çıktı.

Kendinizi profesyonel bir düşünün neredeyse hazır olduğunu söylüyor? Ben öğrenmek zorunda zor ders uzmanları, kendi düşük seviyeli kütüphaneler yazmayın oldu. Onlar şirket paranın üzerindeki tekerleği yeniden icat değil. Bunlar off-the-raf bileşenleri kullanmak ve iş yerine şimdi bir ay daha, bugün halletmek. Bilmediğiniz kod bir levha kullanmak istemiyorum? Bu bir programcı olarak gelip senin hayatının en büyük parçası - alışmak.

Kendi çerçevenin yazılması kendi merakım için ve gerçekten dilini anlamak için harika.

Şahsen ben buluyorum onun gibi zaman kendi yazmak için olduğu gibi bir üçüncü taraf çerçevesini kullanarak alıcıdır. Yine benim kendi kod toplam kontrolü, değil herhangi bir üçüncü taraf çerçeve ile iddia edemez şey var.

Ben de çok MVC çerçeveler çok yoğun kaynak olduğunu düşünüyorum. Yüksek hacimli siteler için onları güzelce çalıştırmak için almak için onlara donanım atmak için hazırlıklı olmak gerekir. Düşük hacimli siteler için (çoğunluk) üçüncü MVC framework hızla gelişmesi büyük bir bonus.

Yani benim görüşüme göre zamanınız varsa, kendi rulo ve bunun gurur. Sadece emin güvenlik söz konusu olduğunda özellikle başkalarının öğrenmek olun.

Bu, tüm gereksinimleri proje ne bağlıdır ve size uygulama nesneleri tasarımı nasıl. MVC bir belirli bir sınıf ya da görünüm tasarımı kullanmaya zorlamayın, sadece size sunu gelen iş mantığı yalıtmak ve veri katmanı uygulaması size daha ölçeklenebilir ve test etmek kolay hale yardımcı olacak bir mimari ile sağlayacaktır.

MVC Eğer denetleyici başına istediğiniz gibi her maruz yöntemi tanımlamak iş mantığa dayalı bir görünüm kendisini aramak ve kontrol nasıl görünüyor ve davranırlar çünkü sizin gibi birçok görünümleri kullanabilirsiniz denetleyici başına bir görüşe bağlı değildir. Yani iki sayfaları oluşturmak zorunda kalmadan tam boy resmi ve minik dönmek için 2 yöntem olabilir dedi. Sen vb denetleyici, başlık meta-veri, komut, bağlantıları, tema, içerik, gelen görünüm her şeyi ayarlayabilirsiniz ..

Modellerine bağlamda, yine proje gereksinimlerine bağlıdır ama kesinlikle, farklı amaçlar ile çeşitli sayfaları var ve farklı veri kaynaklarını değiştirmek için gerekiyorsa herhangi bir durumda, bunların her biri için bir model olmalıdır ve ne yapabilirsiniz sonra, form oluşturmak almak ve verileri kaydetmek için alanları almak için modeli arayarak formu işlevselliğini kapsüller bir sınıf oluşturmak için yok. Bu farklı şekillerde bir sürü yapabilirsiniz sadece bir fikir, yani OOP güzelliktir.

Bir OOP MVC sitesine karşı iyi yapılandırılmış bir cepten site karşılaştırarak bir meselesi değildir, sonunda O aynı zamanda kaygıları izole başarılı olabilir bir site mimari yapı üzerinde çalışıyoruz harcadığınız zaman ve çaba daha bir analiz bu hala okunabilir ve proje gereksinimlerini karşılarken ölçeklenebilir.

Eğer tasarım desenleri hakkında daha fazla fikir almak istiyorsanız google MVP tasarım desenini ve / veya MVVM tasarım deseni kullanabilirsiniz.

Ben kendi çerçevesi yazdım. Bu mimari ve ham kodu oluşturmak için zaman almaz. Birisi orada kendi çerçevesi yazıyor eğer harika. Ama belgeler eşek kesinlikle ağrı daha uygun değilse. Tamamen kendine bağlıdır. Ben de benimkini yazdım. Bu :) çerçeve QA hazır hale getirmek için neredeyse 7 gün sürdü. ancak asıl sorun sizin çerçevesinde yazmak kod parçası ile tatmin elde etmektir. Her zaman çerçevesini doğaçlama gibi ve o kadar iyi olmasını isterdi. BLAH! BLAH! Eğer kendi yazmak isteyen ve rızık için yeterli eminiz eğer. Bunun için GO.

Herhangi MVC - Homegrown ya da değil - size esneklik ve yeniden kullanılabilir kod sağlayacaktır.

ob_start () / ob_ * aramaları onlar model gidin ve şablon olarak adlandırılan, örneğin, hiçbir sorun vardır:

Hello <?php echo $this->getFormattedName(); ?>

senin modeli nerede

function getFormattedName() {
    ob_start();
    echo '<a href="/profile/' . $this->getName() . '">' . $this->getName() . '</a>';
    $return = ob_end_clean();
    return $return;
}

Form senaryoda, muhtemelen bir alan yapılır ve doğrulama, daha sonra her bir özel formu soyut uzatmak nasıl tanımlayan soyut bir form sınıfı isterim.

Zend Framework gibi bir şey kullanarak düşünebilirsiniz - bu kendi başına bir MVC kütüphane iken, (örneğin, sizin iletişim ve geri bildirim formları ve doğrulama için Zend_Form ve Zend_Mail indirebiliriz süper kolayca tek bileşenleri indirebiliriz ve) her şey için kendi modellerini kullanabilirsiniz. Bu da size homebrew MVC çerçevesi orijinal tasarımını büyümek başladığında zamanı gelirse / ne zaman bir geri dönüş olmasının ekstra fayda verecekti. Eğer aniden bir e-posta modeli gerek fark çünkü gün boyunca tutulan değiliz ki ya, en azından, geliştirme süresini hızlandırmak.