我正在設計一個帶有CodeIgniter的Web應用程序(但我認爲該問題通常適用於Web應用程序中的MVC模式)。模型類應代表實體還是返回
當我設計了一些數據庫的實體模型類(比如,爲了說明一個BlogEntry
),我基本上有兩種選擇:
「典型的面向對象」的方法是,讓類代表的實體,即類的一個實例是一個BlogEntry。在笨,這將導致類似的代碼
class Blogentry extends CI_Model {
function load($id) {
// Access database
$this->id = $dbresult.id;
$this->title = $dbresult.title;
$this->author = $dbresult.author;
}
}
要訪問一些博客文章,我會做一個$this->load->model('blogentry');
,叫$this->blogentry->load($id)
,然後用模型類實例的工作。
另一種我經常看到的方法是讓模型返回某個數據結構中的實體。在代碼:
class Blogentry extends CI_Model {
function get_entry($id) {
// Access database, yielding $dbresult
return $dbresult;
}
有了這個,我會寫
$this->load->model('blogentry');
$the_entry = $this->blogentry->get_entry($id);
控制器
,並與$the_entry
工作。在第二種情況下,該課程更像是factory或builder課程。
這兩種方法中的任何一種都被認爲是在MVC中做M的「正確方式」?我認爲,我更經常看到第二種方法,但我沒有看到那麼多的MVC-Web應用程序。任何想法爲什麼第一種或第二種方法可能更合適?
看看[這個史詩般的答案](http://stackoverflow.com/a/5864000/871050)作爲參考。 – 2012-08-06 17:29:56