Doktrin, benim kendi yöntemleri nereye koymak gerekir?

2 Cevap php

Diyelim ki bir kullanıcı modeli var diyelim. Ben model kendisi yöntemlerini vereceğini, ya da bir şablon olarak bu yüzden kullanıcı tablo nesne erişebilir?

Diğer bir deyişle, bu daha fazla tercih edilir:

$u=new User();
$u->register($username, $passwveyad, $email);

veya

$userTable = Doctrine::getTable('User');
$userTable->register($username, $passwveyad, $email);

My instinct would be the second one, since it logically makes mveyae sense, but what about things like passwveyad changing, logging in, etc? Should I really put those on the User model while I keep things like register on the user table object?

2 Cevap

Muhtemelen sizin soruya tam bir cevap olmayacak, ancak slaytlar bir göz alarak ilginizi çekebilir eğer Matthew Weier o'phinney birkaç gün önce yayınlanan bu Play-Doh: Modelling Your Objects konferans; Eğer Modelleri düşünmek yapabilir güzel şeyler var ihtiva ;-)

(They made me think.. But I still cannot give a definitive answer to your question : I'd say "it depends"... But not sure on what ^^ )

Muhtemelen büyük bir uygulama durum, ben bir kat daha kullanmak:

  • Modeli, verilere erişmek için
  • Bunu işlemek için "Hizmet",; Ben Modelinde koymak ne daha fazla yapmak mümkün ... Ve Kontrol o olan, nereye ait değil
  • Ve, tabii ki, Kontrolör ve Görüntüleme

Ama ... kabul herkesi asla Yani ben bir yolu tercih derdim, ve takımda herkes emin olmak projenin tamamı için bu şekilde yapar: bir proje / uygulama karışık çok farklı şekillerde daha kötü bir şey yok !

Genellikle şeyler bir kullanıcı, yani belirli bir örneğine ilişkin ise: sen veya ben, onlar Kullanıcı sınıfta aittir. Onlar bir kullanıcı grubuna ilgili, ya da biz henüz kullanıcı yoksa (örneğin: veritabanından onları yükleyerek), sonra Tablo sınıfta aittir.

Ben örnek olarak yapardı:

class UserTable {
  function register($username, $password, $email) {
    $user = new User;
    $user->username = $username;
    $user->password = $password;
    $user->email = $email;
    $user->save():
  }
}

İnsanlar bazı şeyler olsa nereye ait hakkında iddia edecek ve tasarruf bunlardan biri! Ben benzer başka bir PHP ORM olduğunu uskur, bir tasarruf onun Tablo eşdeğeri yöntemi, yanı sıra Nesne eşdeğeri içerir biliyorum, ve kayıt bu tür tuvale benzeyen olduğunu. Bu yüzden emin Yakında birileri diğer tarafı iddia birlikte olacak!

Benim görüşüme göre, diğer soruları cevaplamak için:

Şifre değişikliği kesinlikle Kullanıcı aittir - Sen onun sadece bir alanı değiştirerek, bir kullanıcının parolasını değişiyor.

Günlüğü tablo sınıfta olmalıdır - onun bir uzman dava almak.