HMVC deseni nedir?

5 Cevap php

Kohana belgelerine Okuma, ben 3.0 sürümünde temel farkı sürüm 2.x yaptığı gibi yerine MVC HMVC izler olduğunu öğrendim. Kohana ait belgeler ve wikipedia üzerinde birinde bu konuda sayfası gerçekten bana net bir fikir vermedi.

Peki bir soru: ne HMVC desen ve nasıl MVC farkı nedir?

5 Cevap

Sam de Freyssinet (Kohana geliştiricilerinden biri) yazdı oldukça in-depth article about HMVC, bunun nasıl kullanılabileceğini ve ne.

I Alloy adında PHP 5.3 HMVC çerçeve kendi geliştirme sürecinde şu anda duyuyorum. Ben ağır yatırım ve HMVC satılan olduğum, ben farklı bir bakış açısı sunmak, ve belki HMVC kullanılması gerektiğini neden daha iyi bir açıklama ve getirdiği faydaları düşündüm.

Bir HMVC mimarisini kullanarak büyük pratik fayda içerik yapıların "widgetization" dir. Bir örnek yorum, değerlendirme, Twitter veya blog RSS beslemesi görüntüler, ya da bir e-ticaret sitesi için alışveriş sepeti içeriği ekran olabilir. Bu aslında ana HTTP isteği bağlamında bağlı olarak, hatta farklı yerlerde muhtemelen birden fazla sayfa üzerinde görüntülenir ve gereken içeriğin bir parçasıdır.

Insanlar genellikle çoğaltma ve düzenleri arasında geçiş, özel yardımcıları kullanarak, kendi Widget yapıları veya kütüphane dosyaları oluşturmak veya istenen ana gelen ilgisiz veri çekerek sonuna kadar böylece geleneksel MVC çerçeveler genellikle, içerik yapıların bu tür bir doğrudan cevap vermeyin Kontrolör View ile itmek ve kısmi işlemek. Içerik veya yükleme gerekli verilerin belli bir parça render sorumluluk birden fazla alanlarda sızması biter ve kullanıldığı yerlerde çoğaltılamaz almak için hiçbiri, özellikle iyi seçeneklerdir.

HMVC, ya da özellikle bu sorumlulukları işlemek için bir Denetleyicisi alt istekleri gönderme yeteneği bariz bir çözümdür. Eğer ne yaptığınızı düşünürseniz, tam Kontrolör yapısını uyuyor. Sen yorumlarla ilgili bazı verileri yüklemek ve HTML formatında görüntülemek gerekir. Yani bazı params yorumlar Kontrolörü bir isteği göndermek, bu modeli ile etkileşim, bir görünüm alır ve Görünüm içeriği görüntüler. Tek fark bir HMVC yaklaşım ile, aslında aynı kontrolör ve "öldürmek ile iç ve dış istekleri hem de hizmet edebilir ama yorumları (yerine tamamen ayrı tam comments sayfanın kullanıcı görüntülediği blog makalenin altında, satır görüntülenir istiyorsun demişler bir taş ",) ile iki kuş. Bu bağlamda, HMVC gerçekten arttırdı kod modülerlik, yeniden kullanılabilirlik ve endişelerini daha iyi ayrılmasını sağlamak için çaba sadece doğal bir yan ürünü olduğunu. BU HMVC satış noktasıdır.

Yani süre Sam de Freyssinet's TechPortal article HMVC ile ölçekleme + HMVC çerçeveler kullanmak insanların% 90, gerçek pratik, ondan gün-gün faydaları almak için nereye öyle değil, düşünmek ilginç.

Yerine ağ üzerinden ihraç edilme, bu yönlendirilmiş oluyor, sevk ve çerçevesinin kendisi tarafından işlenir: Kohana, en azından, bir HMVC isteği "dahili" hizmet bir HTTP isteği olduğunu. Adları "HMVC" ve "MVC" arasında benzerlik aslında yok terimler arasında altta yatan bir bağlantı önerir içinde karıştırıyor: Bir küçük varyant veya diğer değişiklik değil, onlar tamamen farklı şeylerdir. (HMVC da istemci tarafında HTTP isteği olmadan Ajax olarak tarif edilir.) Kohana ait vurgu ve "HMVC" için destek çerçevesi bir HTTP tabanlı servis odaklı mimari için güçlü bir desteğe sahip olduğu anlamına gelir.

Bu mimari desen avantajı aynı "çağıran kongre" iç ve dış istekleri için kullanılan bu yana, bu ihtiyaç duyulduğunda olarak "iç" hizmet taleplerini "dış" istek veya tersi dönüştürmek için önemsiz olmasıdır.

Bu gibi görünüyor kendi adını veren mantıklı bir mimari desen, iken gereksiz (Symfony2'nin "sub-requests" aynı kavram açıklanmaktadır), ve aslında adı yanlış isim gibi görünüyor: Orada özel bir gereklilik veya ihtiyaç istekleri (her şart programın standart çağrısı grafik dışında) bir hiyerarşi oluşturmak; isteklerini kolayca örneğin, özyinelemeli olabilir.

[Update Apr 2011, Mar 2012: yorumlarına yanıt olarak cevap üzerine Genişletilmiş.]

HMVC yakından sevk etmek "bileşen tabanlı" yaklaşımla ilgilidir. Yerine tek bir memuru, bir kontrolöre delege olan temelde, her kontrolör memuru o kendini olarak hareket edebilir. Bu size kontrolörleri bir hiyerarşi verir. Tasarımı daha esnektir ve kodun daha iyi kapsüllenmesini neden olur, ancak daha yüksek bir soyutlama fiyata. Konstrukt bu desen etrafında tasarlanmıştır.

Bu cevap Ayrıca bakınız: http://stackoverflow.com/questions/115629/simplest-php-routing-framework/120411#120411

HMVC is Hierarchical Model View Controller.In in normal MVC every GUI object has its MVC.But there is no any relation between the parent GUI object and Child GUI object unlike HMVC. In HMVC each GUI object has access to its child objects and each of child object can access to its parent object.

So in every view there is a parent view.Through which it can access it parent view. For in every controller there is a parent controller through which It can pass the event to parent controller (If event is not in its scope.)

For details description please click here

Yeni link this address