在PHP MVC中创建方法函数的最佳实践是什么?

3
我想知道在控制器向模型传递信息时,最佳实践是什么。更具体地说,我正在创建一个用户注册模型,在用户类中要求提供某些信息,例如电子邮件、姓名和密码。
我想知道是将参数放在模型函数中并通过这种方式传递它们更好,还是直接调用函数并使用 $_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;
}

方法二
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个回答

2

不应该从模型中访问POST变量。这会使您的模型可重用性降低,因为现在它们依赖于POST数据才能工作。例如,在某些其他时间点,如果您需要一个执行相同操作的方法,但是您从其他来源(CSV)获取数据,则无法使用相同的模型,因为您将其与POST绑定在一起。

尝试在使用此类结构时分离它们。


2

我不会在 Model 层中使用 $_POST (也不会在您的框架中使用相应的内容):该层不需要知道数据来自哪里。

Model 可以从 Web 服务、命令行程序或任何其他地方调用,并且必须仍然工作:它不应依赖于 POST 到应用程序的任何内容。

Controller 是被调用的对象,在收到 HTTP 请求的参数(如果是 HTTP 请求的话)后,它将提取数据并将其传递给处理此数据的层:Model。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接