Ben (PHP ve diğer diller için) çok iyi MVC çerçeveler orada olduğunu biliyorum reddi ile bu soruyu Önsöz. Burada motivasyon anlamaktır. Ve soru uzunluğu için özür dilerim!
Bu modeller arasındaki ilişkinin (olağan bir çok vb birinden, bir ila) ile ilgili söz konusu olduğunda,
- Hangi modeli dernek yükleme sorumludur?
- Nasıl dernek yüklü olmalıdır?
Örneğin, bir kullanıcı bir resim galerisi var; Orada kullanıcı profili bulunuyor ve kullanıcının resimleri. Modeli, bu gibi görünebilir:
class Model_User {
public function load($id) { /* loading code here*/ }
}
class Model_Photographs {
public function load($id) { /* loading code here */ }
}
Yani soru # 1 için, Which class should load all the photographs that a user has?
Bu Model_User sınıfında ise, bu sınıfı şimdi Model_Photographs bağlı olduğu anlamına gelir. Başka bir sınıf olmalıdır?
İkinci soru how the loading of the relationship is done.
Hangisi daha iyi tasarım nedir?
class Model_User {
public function load_photographs() {
$sql = "SELECT photographs.id, photographs.url, photographs.caption FROM
user_photographs, photographs WHERE
user_photographs.photoid = photographs.id AND
user_photographs.userid = {$this->id}";
/* snipped */
foreach ($results as $photo)
{
$photo = new Model_Photo();
$photo->set($photo);
$this->photos[] = $photo;
}
}
}
Ya da bu daha iyi?
class Model_User {
public function load_photographs() {
$sql = "SELECT photoid FROM user_photographs WHERE
user_photographs.userid = {$this->id}";
/* snipped */
foreach ($results as $photo_id)
{
$photo = new Model_Photo($photo_id);
$this->photos[] = $photo;
}
}
}
İlk kod sadece bir sorgu kullanır ama (hiç kendi etki değil) Fotoğraf tablosundan almak için alanları bilmek Model_User gerektirir; ikinci kod kıvrımlara, ama daha SQL sorguları sonuçları.