【发布时间】:2017-05-03 14:16:15
【问题描述】:
我有这样的功能:
public function myfunc ($arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8) {
// do something
}
看到了吗?我的函数有 8 个参数。是的,它也可以,但你知道,它有点难看..!没有更好的主意吗?例如,仅传递一个数组包含所有参数。可能吗?甚至类似的东西。
【问题讨论】:
-
func_get_args() -
你可以使用数组作为参数。
-
对于一个试图做太多事情的函数来说,很多参数是一种代码味道。问自己几个问题:你的函数是否有超过 20 行代码?它是否有超过 2 级的缩进?它是否包含超过 3 个 if/case/条件语句?循环内有循环吗?如果其中任何一个的答案是肯定的,那么如果将代码重构为多个函数而不是单个函数,那么您的代码可能会更好
-
@Mohammad 只有在必须以类似方式处理的类似事物数组的情况下,您才应该这样做。您不应该使用它来缩短参数列表!
-
@MartinAJ 在这种情况下,关联数组是一个合适的参数(当然假设是准备好的语句!)
标签: php function parameter-passing