我碰巧对WordPress博客进行了一些更改,发现他们使用parse_str
(http://php.net/parse_str)来解析并将其可选参数设置为函数。
我想知道发送数组是否有优势?
示例:
使用数组:
$blahOptions = array(
'option_1' => true,
);
BlahArray($blahOptions);
function BlahArray($options = array()) {
$defaults = array(
'option_1' => false,
'option_2' => 'blah',
);
// this would probably be in a function to be used everywhere
foreach ($defaults as $defaultOption => $defaultValue) {
if (!isset($options[$defaultOption])) $options[$defaultOption] = $defaultValue;
}
}
使用parse_str
:
$blahOptions = 'option_1=1';
BlahString($blahOptions);
function BlahString($options = '') {
$defaults = array(
'option_1' => false,
'option_2' => 'blah',
);
parse_str($options, $defaults);
$options = $defaults;
}
答案 0 :(得分:6)
没有。这似乎是传递函数参数参数的荒谬方式。如果你需要重新创建$ _GET或$ _POST变量或类似的东西,但是对于函数的参数,我能理解它吗?这就是那里的代码味道。
他们应该使用数组,然后使用extract()代替。我之前使用过Wordpress,我的建议是保持代码的一致性。它不是模型编程的一个例子。
答案 1 :(得分:2)
没有。缺点多于优势。
当您使用单个字符串时,您只需传递字符串值即可。使用数组,您可以使用每种PHP数据类型,并且每个元素的值类型彼此独立。
答案 2 :(得分:1)
使用parse_str,您可以从URL中删除查询字符串,该函数将起作用。如果您使用数组,并且想要使用查询字符串,则必须在调用函数之前将所有内容枚举到数组中。
我并不完全相信这是最好的方式,但我知道它是如何增加一点灵活性的。