php - 方法参数的首选做法是什么?

标签 php function methods

我对 PHP 中函数的方法参数格式(可以是任何语言)感到困惑。以下是两位候选人

候选人 1:


function foo($param1,$param2,$param3,....$paramN) 



候选人2:


function foo ($arr) {
   $param1 = $arr['param1'];
   $param2 = $arr['param2'];
   $param3 = $arr['param1'];
   ...
   ...
   ...
   $paramN = $arr['paramN'];
}

我目前倾向于候选 2,因为我有几个有很多参数的方法。但是,我也担心,如果我走候选人 2 的道路,那么我的代码就有变得不可读且不易维护的风险。虽然候选 2 也非常诱人,因为现在参数的顺序变得无关紧要(因此是方法签名),但我担心调试会变得很痛苦。

那么推荐的方式是哪种?选择哪位候选人以及为什么?

最佳答案

很多参数都不好处理,我个人会选择候选 2,因为它更具可扩展性。您可以通过验证逻辑来​​补偿“困惑”,以确保所有必需的参数均已正确设置。

在我看来,最好的方法是重构代码并将方法拆分为几个可能可链接的部分,从而降低复杂性。

使用 Value Objects 可能也是一个不错的选择(或者有时也称为数据传输对象),以在某种“容器”中传递所有参数。这样,就确保了只有有效的数据可以被传递,因为值对象本身关心它的内容。

关于php - 方法参数的首选做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13335109/

相关文章:

php - 网络连接不稳定的文件上传解决方案

javascript - JavaScript 中的 'a' ['toUpperCase' ]() 如何以及为什么工作?

javascript - 函数未正确返回

c - 如何将数组的元素数量传递给函数

c# - 如何在 C# 中设置三种方法来接受用户输入并对输入进行数学计算?

java - 在简单文件复制 java 程序中调用方法时出现问题

java - 通过方法和 GUI 获取输入

php - 在 mysql 中上传 CSV 文件时出现问题

php - 三元运算符的不良做法

javascript - 按钮在移动模式下不显示