wp_parse_args做什么?

ggw*_*icz 12 php wordpress parsing widget args

我一直在构建Wordpress小部件,并且总是使用这样的代码:

$instance = wp_parse_args( (array) $instance);
Run Code Online (Sandbox Code Playgroud)

它从来没有引起过问题,建议在几个地方(Justin Tadlock,我有两本Wordpress书籍等),但这些来源都没有真正解释原因.

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

Mar*_*era 8

https://developer.wordpress.org/reference/functions/wp_parse_args/

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

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

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

一般来说,它是在简化函数调用,以避免长代码检查作为参数传递的变量的外观/存在默认值


小智 8

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

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

这就是wp_parse_args进来的地方,它合并了默认值传递的值.

$args = wp_parse_args($passed_in_args, $default_values);
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助


ste*_*eve 5

这是wordpresswp-includes/functions.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;
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个真实的答案。代码可能代表其自身,但仍应添加一些解释。至少放一些类似上面函数注释的东西,没有经验的开发人员可能会略过。 (3认同)