我是PHP和codeigniter的新手。目前,每当我编写模型函数时,我都会传递多个参数而不是单个关联数组,如下所示:
function create_user($first_name, $last_name, $username)
{
$this->db->insert('users', array('first_name'=>$first_name,
'last_name'=>$last_name,
'username'=>$username));
}
而不是:
//where $user === Array('first_name'=>$first_name, 'last_name'=>$last_name, 'username'=>$username)
function create_user($user)
{
$this->db->insert('users', $user);
}
我想知道哪一种是惯用的方式。如果两者都很好并且只是个人偏好的问题,那么我想知道哪种方法比另一种方法更受欢迎。
谢谢。
答案 0 :(得分:1)
我认为这只是个人选择。
我通常使用第二个,因为如果我必须添加或删除参数,我不想更改我的功能。
开发人员很懒,他们说:D
答案 1 :(得分:1)
这是一般答案 - 它适用于几乎所有语言。
有一个例外(想到这一点) - 这就是API的一部分应该始终采用一个数组,因为如果你想调用一个函数,这可以节省工作量在您的应用程序内或通过$_POST[]
- 您可以使用相同的方法进行一些快速检查,以查看它是通过http
发布的帖子还是应用程序本身传入的变量(但是很少)人们似乎还处于消费自己的API的阶段:-P)
如果可以,请始终使用命名变量 - 这样可以降低应用程序出错的可能性。
除非你的应用程序是庞大的/真正的数据密集型(或者有可能在几天内完成这种方式),否则最好一次一个地通过模型进行多次插入以进行调试,并且不应该有任何重要的对速度的影响。
此外,这通常会使应用程序更安全,因为您可以更轻松地定义变量类型(例如,仅限数字)并以controller
级别而不是model
级别处理错误
它非常依赖于函数 - 但命名变量应该始终是首选。
我会尝试解释何时使用每个: -
如果它是一个带有可选参数加载的函数,那么最好传入一个数组 - 但我会说不到20%的函数需要这么大的灵活性。 - >这节省了必须写
private function myFunction($a, $b = "", $c = "", $d = "", $e = "", $f = "", $g = "", $h = "");
$a = $this->myFunction("aa","","","","","","","bb");
如果您只想使用2个参数而不是
private function myFunction($arr = array());
$options = array("a"=>"aa","h"=>"bb");
$a = $this->myFunction($options);
此外,如果一个函数有那么多参数 - 它可能需要重写!
然而 - 如果它是一个总是需要3个变量的函数,那么你应该对它们进行硬编码,因为这样可以更容易地捕获错误(对于IDE,如果你发表评论,你应该对你的函数进行代码提示)它是正确的。)
上面带有数组的示例意味着当你有一个必须至少有 3 变量的函数时,你的IDE将不知道
$options = array("a"=>"aa","h"=>"bb");
$a = myFunction($options);
应该抛出错误。
此外,您必须编写大量不必要的检查,以查看所需的变量是否存在并设置。
编写函数的最佳方式 - 几乎所有语言都是:
$a = "", $b = ""
因此,复杂函数的理想情况是
private function _complex_function($required1,
$required2,
$optionThatWillAlwaysBeRequiredBeforeOtherOptions = "",
$mixAndMatchOptions = array())
{
}
希望很清楚。