我一直在閱讀關於MVC的幾篇文章,並且有一些問題我希望有人可以幫我回答。PHP MVC&SQL minus模型
首先如果MODEL是數據的表示,並且其中操縱該數據的裝置,則使用公共接口數據訪問對象(DAO)與抽象的一定程度應該足以滿足大多數任務應該它不是?爲了進一步闡述這一點,假定我的數據的底層存儲機制是MySQL的大部分開發工作,如果我在構建SQL語句時避免了供應商特定的函數(如UNIX_TIMESTAMP)並使用了一個抽象的DB對象,該對象具有在MySQL和PostgreSQL之間移動的公共接口,或者MySQL和SQLite應該是一個簡單的過程。
這裏就是我得到的一些任務,由單一控制器的處理 - (即放在userRegistration)和相當,創造一個模型該任務,我可以得到數據庫對象的實例 - - (即DB :: getInstance()) - 然後進行必要的數據庫調用來插入一個新用戶。爲什麼有這樣一個簡單的任務,我會創建一個新的模型?
中的一些例子我見過模型創建,而MODEL內有其獲取從訂單表訂單x個,並返回一個數組的SELECT語句。爲什麼要這樣做,如果你在創建另一個循環來遍歷該數組並將其分配給VIEW;恩。 1?
ex。 1:
foreach ($list as $order) { $this->view->set('order', $order); }
我想我可以修改返回,所以這樣的事情是可能的;恩。 2.
ex。 2:
while ($order = $this->model->getOrders(10)) { $this->view->set('order', $order); }
我想我的觀點是,爲什麼創建模型時,你可以簡單地從你的控制器內進行必要的數據庫調用,使用與普通接口DB對象來訪問數據的假設,如我懷疑大多數網站正在使用。是的,我不認爲這對所有的任務都是實用的,但是當大部分工作都很簡單,不一定需要單獨的型號。現在,用戶發出請求'www.mysite.com/Controller/action/args1/args2',前端控制器(我稱之爲路由器)傳遞給控制器(類),並在該控制器內調用某個動作(方法),然後從那裏創建適當的動作並輸出。
呼叫中心局仍然會發生,唯一的區別是它會發生在你的** MODEL **。所以從這個意義上說,我不認爲它更容易。 我確實覺得有些任務非常簡單,以至於添加另一個圖層毫無意義。在大多數情況下,我認爲DAO會隨着時間的推移而發生變化,這種情況如此之低以至於不能保證單獨的** MODEL **。 在** MODEL **和** CONTROLLER **之間來回執行功能,可能會變得非常煩人。如果你在一個團隊和個人或團隊工作的任務是完成不同的部分,我確實看到了一種用途。 – Andre 2009-08-22 19:47:35