MVC fonksiyonu - görünümünde tamam mı?

2 Cevap php

Ben bazı güzel, temiz, özel MVC yapısı bazı eski spagetti kodlama siteme yükseltme (ve süreçte öğrenme eğlenmek) yaşıyorum.

Blog listeleri görüntülemek için sayfamda, ben benim dinamik bir bağlantıları için HREF en oluşturmanıza yardımcı olacak bir işlevi vardı - $ _GET yoluyla uygulanan filtreler takip etmek ... açıklamak zor ... ama işte burada:

/* APPLY BROWSE CONTROLS / FILTERS 
 | this function reads current $_GET values for controlling the feed filters,
 | and replaces the $value with the desired new $value
*/
function browse_controls($key,$value=null,$ret='url') {

	// find current control settings
	$browse_controls = array();
	if(array_key_exists('browse',$_GET)) { $browse_controls['browse'] = $_GET['browse']; }
	if(array_key_exists('display',$_GET)) { $browse_controls['display'] = $_GET['display']; }
	if(array_key_exists('q',$_GET)) { $browse_controls['q'] = $_GET['q']; }

	// replace desired setting
	if($value) {
		$browse_controls[$key] = $value;
	}else{
		unset($browse_controls[$key]);
	}

	// build url
	$url = ABS_DOMAIN . 'sale/';
	if(!empty($_GET['cat'])) { $url .= $_GET['cat'] . '/';}
	if(!empty($_GET['sub'])) { $url .= $_GET['sub'] . '/';}
	$url .= '?' . http_build_query($browse_controls);
	return $url;
}

Ben sadece bu sorguyu diyebiliriz:

<a href='<?php echo browse_controls('browse',$prev_page); ?>' class="crumb">Previous Page</a>

Nasıl MVC yapısı ve sunum ve mantık tam olarak ayrılması ile aynı elde edebilirsiniz. Işlevleri benim şablonda izin verilir?

Yardım!

2 Cevap

Ben sizin özel çerçeve hakkında emin değilim, ama Ruby on Rails ve ASP.NET MVC, şeyler bu tür helper classes için gider. Onlar UI endişeleri vardır. Yani şimdi burada mantık. Sadece biçimlendirme transforiming, HTML bina. Sen şablonlar yakın koyun, ya da onlara ayrı bir dizin verebilir.

Ne tavsiye edebilirsiniz çerçeve ile boundled örnekleri kontrol etmektir. Genellikle çerçevesinin iyi knowlege verir.

Ben aşağıdaki testi kullanın: Ben 'sunu uzayda' yazmak için çeliyor kod sunmak, ya da how sunmak için what karar olduğunu? Cevap what ise, o zaman daha fazla iş mantığı gibi hissediyor ve muhtemelen şablonun dışında aittir. O how şablonuna (veya ilişkili destek fonksiyonları) ait olduğunu, daha sonra sunmak için eğer.

Örneğin, bazı kullanıcılar için% 10 indirim sunuyoruz diyelim. Iskonto açıkça iş mantığı önce / sonra özel fiyatlar Computing. Bir indirim varsa test ve daha sonra kırmızı bunu gösteren sunum mantıktır.

Tabii ki, orada kurallarına istisnalar her zaman vardır, ancak bu gibi kabul edilmeli ve size özel why Eğer istisna yapıyoruz açıklamada belirtilmelidir.