Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以将参数传递到模型函数中吗?_Php_Codeigniter_Method Parameters - Fatal编程技术网

Php 我可以将参数传递到模型函数中吗?

Php 我可以将参数传递到模型函数中吗?,php,codeigniter,method-parameters,Php,Codeigniter,Method Parameters,在codeigniter中,这样做是否可能?一般来说,这被认为是一种良好的做法吗?是的,这是可能的 我一直这样做,如果数据不是来自post,我可以将其发送到模型 $this->load->model('some_model'); $this->some_model->some_function($var); 您希望向模型发送哪些数据?这将有助于判断这是否是不好的做法。当然,这是可能的!正如Kieran所展示的,您可以在模型类中编写接受参数的函数 请记住,控制器应该首先解

在codeigniter中,这样做是否可能?一般来说,这被认为是一种良好的做法吗?

是的,这是可能的

我一直这样做,如果数据不是来自post,我可以将其发送到模型

$this->load->model('some_model');
$this->some_model->some_function($var);

您希望向模型发送哪些数据?这将有助于判断这是否是不好的做法。

当然,这是可能的!正如Kieran所展示的,您可以在模型类中编写接受参数的函数

请记住,控制器应该首先解析/验证这些参数,模型中不应包含额外的验证。您的模型应该严格用于对数据库进行写入和读取

因此,作为一个好的实践,您应该只传递包含要在查询中存储或使用的实际数据的参数

我通常为不同的WHERE情况编写不同的函数。例如:

select($id){}
select_by_name($name){}
...
这使您的模型易于理解。我唯一的例外是限制你的结果。在我所有的模型中,我都有一个on函数来选择所有记录,并有一个选项来传递另外两个变量以进行分页:

select_all($start=null,$limit=null){
    $qry = "SELECT * FROM ...";
    if($start != null) $qry .= " LIMIT ?,?";
    return $this->db->query($qry,func_get_args());
}

您的模型是否也应该进行输入验证还有争议,所以不要将其作为事实发布。坚实的分层体系结构在所有级别都有验证。由于不能在CI之外直接调用模型方法,因此可以不在模型中重复验证,尽管查询的输入检查仍然适用。