我的 PHP 函数应该接受参数数组还是应该显式请求参数?

2022-08-30 12:40:03

在我正在研究的PHP Web应用程序中,我看到以两种可能的方式定义了函数。

方法 1:

function myfunc($arg1, $arg2, $arg3)

方法 2:

// where $array_params has the structure array('arg1'=>$val1, 'arg2'=>$val2, 'arg3'=>$val3)
function myfunc($array_params)

何时应使用一种方法而不是另一种方法?似乎如果系统需求不断变化,因此myfunc的参数数量不断变化,则方法1可能需要大量维护。


答案 1

如果系统变化如此频繁,以至于使用索引数组是最好的解决方案,我会说这是您最不担心的。:-)

一般来说,函数/方法不应该采用太多的参数(5加或减2是最大值),我会说你应该坚持使用命名(理想情况下是类型提示)的参数。(索引参数数组只有在存在大量可选数据时才真正有意义 - 配置信息就是一个很好的例子。

正如@Pekka所说,传递一系列论点也很容易被记录下来,因此对于其他人/你自己来说,在“n”个月内要保持。

更新-ette...

顺便说一句,经常提到的《代码完成》一书非常详细地研究了这些问题 - 这是我强烈推荐的一本很棒的书。


答案 2

使用params数组(在其他语言中称为“命名参数”的替代词)很棒-我喜欢自己使用它-但它有一个很大的缺点:使用标准的phpDoc表示法无法记录参数,因此,当您键入函数或方法的名称时,您的IDE将无法为您提供提示。


推荐