MVC ilgili soru: DB aktivitesi için AltSınıf

1 Cevap php

Ben sadece son zamanlarda OOP & daldın Şimdi MVC ve ben bu şablon motoru kullanarak: http://www.milesj.me/resources/script/template-engine

(Ben bir temel veritabanı sarmalayıcı sınıf kullanıyorum) benim DB çağrıları koymak nerede bir soru hakkında merak ediyorum.

Ben iki yolu yapılır gördüm.

sınıf Cart

    /**
 * Counts items in cart
 * @return int
 */
public static function count() {
	require_once(DATABASE .'cartext.php');
	$info = User::getInfo();
	$count = CartExt::inCart($info['0']['userid']);
	return $count;
}

Then in sınıf CartExt

/**
 * user cart count
 * @param int
 * @return int
 */
public static function inCart($shopperID) {
	$db = Database::getInstance();
	$query = $db->execute("SELECT * FROM Listing WHERE shopperid = '$shopperID'");
	$count = 0;
	while ($row = $db->fetchAll($query)) {
		$count++;
	}
	return $count;
}

Büyük fonksiyonları ile ben iki ayıran avantajı görebilirsiniz, ama çok zaman yukarıda örnek olarak sıradan değil, ya da daha kötüsü: Taban sınıf sadece kendi değerini Dahili çağırıyor ve döndürür! Herkes soruyor Ayrıca, eğer ben alt http isteklerine işlevi içinde bir require_oncenin yapıyorum.

Neyse, ben sadece bu konuda bazı düşünceler istiyorum.

Ayrıca, ben denetleyicisi $ _POST ['veri'] idare ve sınıf içinde bunu işleme karşı, orada benim işlevlerine bir param olarak geçmesi gerektiğini düzeltmek ediyorum? (Eğer bu konularda henüz bir form nesnesi / sınıfını kullanarak değilim).

Bu düşüncelerinizi işitme bekliyorum.

1 Cevap

Database calls should be executed from the Model.
If this goes via:

  • mysql_query ()
  • Bir veritabanı sarıcı
  • bir ORM gibi Doctrine

kadar MVC ile ilgili olarak önemli değildir. Ben ikincisi tavsiye rağmen.

Reasoning
When you are storing data in a database that data usually represents model data: a User, an Order, etc.

Exceptions
If your storing sessions in the database or use the database for caching. These belong more to the Controller than the Model classes.