在PHP中创建函数/方法时,使用数组还是单个变量是最佳做法?

在PHP中创建函数/方法时,使用数组还是单个变量是最佳做法?,php,coding-style,Php,Coding Style,创建这样的函数是否被视为“坏习惯”: // $arr_member_fields['first_name'] = $_POST['first_name']; // $arr_member_fields['last_name'] = $_POST['first_name']; // $arr_member_fields['email'] = $_POST['email']; // $arr_member_fields['dob'] = $_POST['dob']; //

创建这样的函数是否被视为“坏习惯”:

// $arr_member_fields['first_name'] = $_POST['first_name'];
// $arr_member_fields['last_name']  = $_POST['first_name'];
// $arr_member_fields['email']      = $_POST['email'];
// $arr_member_fields['dob']        = $_POST['dob'];
// $arr_member_fields['gender']     = $_POST['gender'];

function update_member($int_member_id $arr_member_fields)
{
    //some code
}
还是应该创建一个没有数组的函数,而只使用变量——比如:

function update_member($int_member_id, $str_first_name, $str_last_name, str_email, $str_dob, $chr_gender)
{
    //some code
}
我喜欢第一种方法(带有数组的方法)的原因是,出于数据库插入/更新的目的,我始终可以选择在数组中循环


非常想知道其他人对此的输入。

取决于功能。在编写函数时,这里没有能够充分捕获大多数情况的最佳实践。如果不需要循环遍历参数,该怎么办


在这种情况下,你最好是通过数组。

这是一个我考虑一个结构来保存数据的情况。这样,我可以将结构或结构数组传递给方法,也可以访问结构的各个元素


当然,如果我想更进一步,我会创建一个类而不是一个结构。然后,我可以拥有方法以及数据、setter、getter和验证等等。

这样的事情最终归结为对性能和代码可读性的影响。虽然传递数组非常方便,但它也使其他人很难理解您的代码(如果您在6个月后再次使用它,甚至您也很难理解)。如果数组是在一个大文件或另一个文件中的其他地方定义的,则尤其如此

归根结底,这实际上要归结为您为什么要首先尝试优化代码。它是为了性能,还是为了更容易理解/阅读

如果是为了可读性,请选择似乎最容易理解的方法。几个月后,当你不得不回去调整一些事情时,你会感谢自己的


如果是为了性能,请确保您确实需要提高性能,并且您不是为了优化而优化某些东西。通常情况下,为了解决不存在的性能问题,您会创建一个非常真实的可读性问题。

我会使用第二种方法,因为您的IDE可以告诉您应该使用哪些参数,而无需转到该文件。现在在一个小项目中使用数组似乎还可以,但随着项目的扩大,以后可能会出现问题。它还可以避免您在以后尝试使用它时问自己“我是使用了name_uuufirst,还是first_uuuuname?”这些字段看起来像是一个表中的某个字段,无论如何都会在一条语句中更新,因此,我不认为有任何理由希望在数组上循环。

我认为按数组传递参数通常是个坏主意。如果参数列表很长,足以证明它们是作为数组传递的,那么这可能表明代码没有以最佳方式设计

在数组中传递参数更难使用PHPDocumentor之类的东西来记录,而且IDE中的代码完成也不会检测到。明确地传递参数还允许类型暗示,并且对代码的读者更透明


显然,如果要将要处理的项目数组作为函数参数传递,那么将其作为数组传递是有意义的。

我认为您需要对问题进行编辑,使其更具体于语言领域(例如,perl中的web编程或其他)。并添加适当的标签。我相信这也是一个好主意。行。谢谢