2016-01-05 47 views
5

,所以我見過一個CRUD模型後容易的模型是在數據庫中的表表示像users表它會是這樣的:使用所有控制器,而不是單獨的模型爲每個控制器

class user_model { 

    public $id ; 
    public $username ; 
    public $password ; 
    public $email ; 


    public function save(){ 
    $db->query(" insert into `users` (username , email , password) values ('$this->username' , '$this->email' , '$this->password') "); 
    } 

    public function delete(){ 
    $db->query(" delete from users where id = $this->id "); 
    } 

} 

但這proccess是相當緩慢和大多數的模型做的就是基本的CRUD操作...所以我用一個CRUD模型幾乎是我的控制器都喜歡:

class crud_model { 

    public function save($tbl , $data){ 
    $db->query(" insert into $tbl (".explode(',' , array_keys($data)).") values (".explode(',' , $data).") "); 
    } 

    public function delete( $tbl , $data){ 
    $db->query(" delete from $tbl where $data['column'] = $data['val'] "); 
    } 

} 

認罪請注意,這是一個非常簡化的版本我的模型和基本上它沒有像原始代碼(即時通訊使用原代碼中的活動記錄,它可以處理複雜的情況),所以忽略語法和技術錯誤

所以我想知道是否有這種方法的問題?我錯過了什麼?

什麼有很多型號的點時,你可以用一個CRUD模型度日....它只是好像時間

+0

儘管您應該使用準備好的語句來獲取安全收益,但您的代碼沒有任何問題。 –

+0

@HenriqueBarcelos實際上我正在使用查詢的活動記錄,我只是希望儘可能簡化代碼 – max

+2

您可以繼承一個公共基類,以便編寫'save'和'delete'方法只有一次。 – user3409662

回答

2

你的方法不一定一夥的。作爲程序員,我們喜歡事物的一致性,這樣當你不得不修改你的代碼時,你不必擔心一個表模型與另一個表模型的工作方式不同。我們也懶惰(以一種好的方式),這樣你就可以一次性寫出你的CRUD類並在任何地方使用它。你已經用你的單一課程理念解決了這個問題。然而,如果你把你的CRUD類,然後讓你所有的表模型繼承它,你會得到一次寫代碼的好處,再加上如果你需要做一些超出你的基礎的表CRUD代碼可以輕鬆覆蓋或添加到您的子表類中的功能。

根據模式有一個模型來表示您的表,使用您當前的方法,您不能真正代表具有通用CRUD類的單個表。模型類通常會具有特定於所表示的表的附加類屬性。這允許你設計你的類,以便如果它們被重用,開發人員對底層數據結構有更好的理解。在你的原始問題中看看你的User類的例子。該類具有諸如$id,$username$password的屬性。開發人員可以查看並確切知道創建新用戶需要什麼。

相關問題