【发布时间】:2010-11-03 02:11:41
【问题描述】:
有时我会编写一个带有单个输入的 PHP 函数,一个包含该函数所有输入的关联数组。这有一些好处,例如不必记住输入的正确顺序,但我也注意到它使对大型代码库的更改变得更加容易;当我需要添加另一个变量,并且该变量必须通过 4 或 5 个预先存在的函数时,我可以将它粘贴到数组中并传递它会容易得多。
我的问题是,这样做有缺点吗?
我很少在示例中或在我使用的开源代码中看到以这种方式编写的函数,这让我相信可能存在缺点。如果没有理由不这样做,那为什么不把所有的函数都写成这样呢?
更新
感谢您的所有回答。看起来有两个主要问题很突出:
代码可读性 - 无法分辨哪些变量将进入函数以及它们的用途
变量蠕变 - 最终可能会出现大量数组从一个函数弹跳到下一个函数;不应将参数传递给不需要它们的函数
这两个都是我没有想到的好点。
似乎一般要点是,存在问题的代码可能应该转换为类。不幸的是,在这个特定的项目中,这样的重构超出了范围,但我也认为 Bill Karwin 的解决方案很好——传递一组可选变量
【问题讨论】:
-
出于兴趣,您可以发布一个您将编写的示例函数吗? :)
-
@Shadi - 更像是“出于病态的好奇心”? :)
-
所以不是 function myFunc($var1, $var2, $var3, $var4 ...) {} 你有 function myFunc($params) { } 然后通过 $params[ 'var1']等
-
如果你好奇的话,“命名参数”的概念已经被 PHP 内部团队讨论过好几次了,但都是ultimately rejected。
标签: php arrays object function