1

我碰巧对 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;
}
4

3 回答 3

6

不,这似乎是一种传递函数参数参数的荒谬方式。如果您需要重新创建 $_GET 或 $_POST 变量或类似的东西,我可以理解它,但是对于函数的参数?那是代码的味道。

他们应该使用数组,然后使用extract()代替。我以前使用过 Wordpress,我的建议是让代码保持一定的距离。它不是模型编程的示例。

于 2009-05-05T22:25:57.457 回答
2

不,缺点多于优点。

当您使用单个字符串时,您只需传递字符串值。使用数组,您可以使用每种 PHP 数据类型,并且每个元素的值类型彼此独立。

于 2009-05-05T22:21:36.593 回答
1

使用 parse_str,您可以潜在地从 URL 中删除查询字符串,并且该函数将起作用。如果您使用数组,并且想要使用查询字符串,则必须在调用函数之前将所有内容枚举到数组中。

我并不完全相信这是最好的方法,但我知道它如何增加一点灵活性。

于 2009-05-05T22:22:38.260 回答