【发布时间】:2012-04-28 11:05:41
【问题描述】:
我喜欢使用 key=>value 对(数组)作为参数而不是单个参数来创建我的 PHP 函数。
例如,我更喜欢:
function useless_func($params) {
if (!isset($params['text'])) { $params['text'] = "default text"; }
if (!isset($params['text2'])) { $params['text2'] = "default text2"; }
if (!isset($params['text3'])) { $params['text3'] = "default text3"; }
echo $params['text'].$params['text2'].$params['text3'];
return;
}
我不喜欢:
function useless_func($text = "default text", $text2 = "default text2", $text3 = "default text3") {
echo $text.$text2.$text3;
return;
}
我第一次看到在 Wordpress 代码库中广泛使用这种方式。
我喜欢数组的原因:
- 函数参数可以按任意顺序提供
- 更容易阅读代码/更多的自我记录(在我看来)
- 不易出错,因为在调用函数时我必须调查正确的数组键
我正在与一位同事讨论这个问题,他说它没有用,只会导致额外的代码,而且设置默认值要困难得多。基本上,他在所有三点上都完全不同意我的观点。
我正在寻求专家的一般建议和指导,他们可能能够提供见解:有什么更好或更合适的方法来做到这一点?
【问题讨论】:
-
我不明白为什么人们大多反对以你提到的方式传递它。我认为这是一种灵活的方式,即使有人正在处理你的功能。我正在开发一个框架,它需要raw_queries 和其他一些东西。解析参数数组的能力使其非常灵活。
-
@ethanpil 如果您仍然在此问题上 - 我在今天提出的类似问题 stackoverflow.com/questions/51751753/… 中链接到您的问题,并且得到的答案超出了人们在这里谈论的范围。他们告诉我,做你和我正在做的事情的更好方法是为参数中的信息创建一个类,并且函数成为该类的方法。我接受的答案提供了一些将我们的数组技术翻译成对象语言的代码。我认为这看起来是一种更好、更复杂的方法。
标签: php arrays function arguments