Sorusuna kendisi:
class User
{
public function getByName($username)
{
//queries here
}
public function getById($id)
{
//queries here
}
}
No Bir işletme herhangi veritabanları ya da diğer dış bilgilerin farkında olmamalıdır. Bunun için O / R-Mapper çeşit kullanmalısınız - Doctrine gibi.
"Kullanıcı" sınıf bir model sınıf olduğunu düşünüyor, ben Tamam olurdu sanırım ...
Ama, yine de, yeni bir katman ekleyerek, daha uzağa biraz gitmek ve kullanabilirsiniz:
User
) as seen by the application Kullanıcı verilerini depolamak için sınıf ve ilgili iş / mantık kurallarıBu şekilde, kullanıcı sınıfı nasıl saklandığına bilmek zorunda olmaz: bir DB ve XML dosyası, düz bir dosya, her ne olursa olsun, Kullanıcı sınıfı yine aynı olurdu olabilir.
İşleri kolaylaştırmak için, bazı ORM Framework kullanabilirsiniz; PHP gerçekten iyi biridir Doctrine.
Evet, bu doğru. Modelleri (Bu durumda User
) bu yüzden ne yaptıklarını, bunu çalıştırmak sonuçları yorumlamak ve sonra ayrıştırılmış veri aktarmak, aslında SQL sorguları yaratır veritabanı ile denetleyicileri bağlayan MVC bir tabaka vardır.
Eğer ancak bu bölümü bazı PHP çerçeveler kullanıyorsanız vakaların çoğu çerçevesi tarafından pasta alınır. CakePHP Örneğin veritabanı tablosundaki her alan için findByName
, findById
, vb gibi bir "sanal" yöntemleri için model referanslar var. Eğer bir çerçeve kullanıyorsanız Yani siz kendi yazmaya önce benzer yöntemler sağlamaz ise ilk kontrol etmek isteyebilirsiniz.