问题 wp_parse_args做什么?


我已经构建了一段时间的Wordpress小部件,并且总是使用这样的代码:

$instance = wp_parse_args( (array) $instance);

这从来没有引起过问题,建议在几个地方使用(Justin Tadlock,我有两本Wordpress书籍等),但这些来源都没有解释 为什么

那么,这实际上做了什么,如果省略它会发生什么?


12572
2017-09-11 14:58


起源



答案:


通俗地说,它正在合并数组。

它经常被使用,因为它允许函数接受多个参数而不会使代码看起来很乱。然后通过允许开发人员设置默认值来进行下一步。

这就是wp_parse_args的用武之地,它合并了默认值传递的值。

$args = wp_parse_args($passed_in_args, $default_values);

它还将URL查询字符串转换为数组。

希望这可以帮助


8
2017-08-21 18:15





http://codex.wordpress.org/Function_Reference/wp_parse_args

wp_parse_args是一个通用实用程序,用于将参数数组和默认值数组合并在一起。它还可以被赋予URL查询类型字符串,该字符串将被转换为数组(即“id = 5&status = draft”)。

它在整个WordPress中使用,以避免担心默认和输入的逻辑,并产生一个稳定的模式来传递参数。 query_posts,wp_list_comments和get_terms等函数是wp_parse_args简化功能的常见示例。

具有基于$ args的设置的函数能够无限扩展可能传递给它们的值的数量,从而避免超长函数调用的烦恼,因为有太多的参数需要跟踪,其中许多只有其功能是在极少数情况下覆盖通常很好的默认值。

通常,它简化了函数调用,以避免长代码检查 外观/存在 和 默认值 作为参数传递的变量


4
2017-09-11 15:01





这是wordpress的function.php文件中的代码:

/**
 * Merge user defined arguments into defaults array.
 *
 * This function is used throughout WordPress to allow for both string or array
 * to be merged into another array.
 *
 * @since 2.2.0
 *
 * @param string|array $args Value to merge with $defaults
 * @param array $defaults Array that serves as the defaults.
 * @return array Merged user defined values with defaults.
 */
function wp_parse_args( $args, $defaults = '' ) {
if ( is_object( $args ) )
    $r = get_object_vars( $args );
elseif ( is_array( $args ) )
    $r =& $args;
else
    wp_parse_str( $args, $r );

if ( is_array( $defaults ) )
    return array_merge( $defaults, $r );
return $r;
}

2
2017-09-11 15:03



这不是一个真实的答案。代码可能代表自己,但是应该添加一些解释。至少应该像上面的函数注释那样,没有经验的开发人员可能会略过这些注释。 - SunnyRed


答案:


通俗地说,它正在合并数组。

它经常被使用,因为它允许函数接受多个参数而不会使代码看起来很乱。然后通过允许开发人员设置默认值来进行下一步。

这就是wp_parse_args的用武之地,它合并了默认值传递的值。

$args = wp_parse_args($passed_in_args, $default_values);

它还将URL查询字符串转换为数组。

希望这可以帮助


8
2017-08-21 18:15





http://codex.wordpress.org/Function_Reference/wp_parse_args

wp_parse_args是一个通用实用程序,用于将参数数组和默认值数组合并在一起。它还可以被赋予URL查询类型字符串,该字符串将被转换为数组(即“id = 5&status = draft”)。

它在整个WordPress中使用,以避免担心默认和输入的逻辑,并产生一个稳定的模式来传递参数。 query_posts,wp_list_comments和get_terms等函数是wp_parse_args简化功能的常见示例。

具有基于$ args的设置的函数能够无限扩展可能传递给它们的值的数量,从而避免超长函数调用的烦恼,因为有太多的参数需要跟踪,其中许多只有其功能是在极少数情况下覆盖通常很好的默认值。

通常,它简化了函数调用,以避免长代码检查 外观/存在 和 默认值 作为参数传递的变量


4
2017-09-11 15:01





这是wordpress的function.php文件中的代码:

/**
 * Merge user defined arguments into defaults array.
 *
 * This function is used throughout WordPress to allow for both string or array
 * to be merged into another array.
 *
 * @since 2.2.0
 *
 * @param string|array $args Value to merge with $defaults
 * @param array $defaults Array that serves as the defaults.
 * @return array Merged user defined values with defaults.
 */
function wp_parse_args( $args, $defaults = '' ) {
if ( is_object( $args ) )
    $r = get_object_vars( $args );
elseif ( is_array( $args ) )
    $r =& $args;
else
    wp_parse_str( $args, $r );

if ( is_array( $defaults ) )
    return array_merge( $defaults, $r );
return $r;
}

2
2017-09-11 15:03



这不是一个真实的答案。代码可能代表自己,但是应该添加一些解释。至少应该像上面的函数注释那样,没有经验的开发人员可能会略过这些注释。 - SunnyRed