Kod tasarımı PHP 'Widget gibi bir şey'

2 Cevap php

PHP ile yazılmış bir prototip web sitesi var. Son zamanlarda düzen ve veritabanı işlemleri ayrı mantığı kodu yeniden yazıldı ettik. Yani şimdi ben MVC kod tasarım gibi bir şey var.

Şimdi beni rahatsız eden, MVC birçok dosya olacak ve diğer (model + görünüm + kontrolör) ile kombine edildiğinde her şey görüntülemek olacaktır. Yani benim MVC parçaların widget gibi bir şey oluşturmak için yararlı olacağını anladım.

Örneğin ben ürünlerin MVC Ben bu yeni bir PHP dosyasına geçmek GET değerlere dayalı ürünleri görüntülemek için böyle moda MVC parça dosyalarını birleştiren bir PHP dosyası oluşturmak istiyorum daha görmek varken.

Ben bu şekilde başarırsınız herhangi bir widget, web sitesinin subparts ayrı ayrı görüntüleyebilir ve diğer bölgelerinden ayrı kullanmak için kullanılabilir olacağıdır. Yani widget gibi veya Firefox tarayıcı tasarım gibi bir şey olurdu.

Yani ayrı ayrı web sitesinin her parçası test etmek mümkün olacak, ve sadece aktüel web sayfası tasarımı içine bu parçaları birleştirmek daha. Yani kullanıcı testleri daha kolay çok olurdu, ve sunum dosyaları çok kısa ve kolay anlaşılır olacaktır.

Ben bu konuda ne düşünüyorsunuz bilmek isterim. Ben tasarım şeylerden herhangi bir deliğe düşmek istemiyorum ve ben bu kolay web sitesi kodu muhafaza tutmak için gelecekte önemli olacak bir an olduğunu düşünüyorum.

Ben düzeltmek muyum?

2 Cevap

MVC birçok dosya olacak ve diğer (model + görünüm + denetleyicisi) ile kombine edildiğinde her şey gösterecektir

Eğer MVC modeli hakkı elde etmemiş gibi bu sesler. Sadece İzlenme içerik veya 'görüntü bir şey' var.

Buna dayanarak, yalnızca sonra Düzen kombine edilebilir içerik küçük bir Widget gibi parçasını oluşturabilir, eylemleri oluşturabilirsiniz.

Ben Zend_Layout Quick Start okuma tavsiye etmek istiyorum.

Senin sorunun cevabı view composition.

Böylece üst çubuk, ikinci düzey nav bar, ürün listesi, önizleme alanı, ve: Ben küçük parçalar halinde tüm ekranı bölme öneririz. Bunlar denetleyicisi ayrı görünümlerde, görünümü yardımcıları veya ek yöntemlerle sağlanabilir. Sonra bir denetleyici eylem basit bir HTML düzeni tek bir ekran haline compose parçaları kullanarak olur.

Örn. statik üst bar için bu özel görünümü olabilir. Dinamik ürünler listesi için karmaşık bir görünüm sağlar denetleyicisi yöntemi getProductsList($categoryId) olabilir. Ürün Önizleme görünümü yardımcısı tarafından teslim edilebilir. Aşağıdaki örneğe bakın:

// inside class ProductsController
public function index($categoryId, $productId = null) {

    // specialised view
    $topBar = new TopBarView();
    $topBar->selected = 'products';

    // helper method
    $list = $this->getProductsList($categoryId);

    // helper object
    $previewHelper = new PreviewHelper($productId);
    $preview = $previewHelper->getView();

    // view composition
    $view = new View('path/to/template.tpl');
    $view->add($topBar);
    $view->add($list);
    $view->add($preview);
    return $view;

}

Bu kompozisyon nasıl çalıştığını göstermek için sadece bir örnektir.

Widget (yani ürün listesi) teslim için bir yöntem olan gizli yararı Ajax desteklemek için yeniden olabilir olmasıdır. Kategorisini değiştirme yeni bir kategori id ile getProductsList yöntemi Ajax arama gerektirir.