2011-03-10 92 views
3

我想知道從控制器傳遞信息到模型時,什麼被認爲是最好的做法。更具體地說,我在用戶類中創建一個用戶註冊模型,要求輸入某些信息,例如電子郵件,名稱和密碼。在PHP MVC中創建方法函數的最佳實踐是什麼?

我想知道如果這是更好地把模型函數中的參數,並通過他們的方式,或者是更好的只是調用函數和使用$ _ POST變量查詢。

這裏有兩個例子,我指的是。

方法1種

function register(){ 

    $first_name = $this->input->post('first_name'); 
    $last_name = $this->input->post('last_name'); 
    $email = $this->input->post('email'); 
    $password = $this->input->post('password_1'); 

    $this->user_model->register_user($email, $password, $first_name, $last_name));} 

function register_user($email, $password, $first_name, $last_name){ 
    $sql = "INSERT INTO users (user_id, email, passwd, first_name, last_name, registration_date, confirmed, confirmation_code, banned)VALUES (NULL, ?, ?, ?, ?, '".date('Y-m-d')."', 'no', '1fg455675', 'no')"; 
    $register = $this->db->query($sql, array($email, $password, $first_name, $last_name)); 
    return $register; 
} 

方法2

function register(){ 
    $this->user_model->register_user());  
} 

function register_user(){ 

    $first_name = $this->input->post('first_name'); 
    $last_name = $this->input->post('last_name'); 
    $email = $this->input->post('email'); 
    $password = $this->input->post('password_1'); 


    $sql = "INSERT INTO users (user_id, email, passwd, first_name, last_name, registration_date, confirmed, confirmation_code, banned)VALUES (NULL, ?, ?, ?, ?, '".date('Y-m-d')."', 'no', '1fg455675', 'no')"; 
    $register = $this->db->query($sql, array($email, $password, $first_name, $last_name)); 
    return $register; 
} 

我已刪除了大量的驗證代碼的,什麼不能簡化的事項,希望你明白我的意思。

回答

2

你不應該從你的模型訪問您的POST變量。這會讓你的模型更加可重用,因爲現在他們依靠POST數據來工作。例如,在一些其他的點,如果你需要做同樣的事情的方法,但你從其他來源(CSV),您將無法使用相同的模型讓您的數據,因爲你已經在用它綁POST。

嘗試分離它們,當你有這樣的結構工作

2

我不會用$_POST(也不是它的等效與框架)在模型層:這個不必知道在哪裏數據來自於。

該模型可以從Web服務,一個命令行程序,或任何被調用,並且必須仍然有效:它必須不依賴於任何被髮布到應用程序。

的控制器是被調用的一個,在接收到HTTP請求的參數(在HTTP請求的情況下,當然);它會提取數據,並將其傳遞給可用於此數據的圖層:模型。

相關問題