Что делает wp_parse_args?

Я некоторое время создавал виджеты Wordpress и всегда использовал такой код:

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

Это никогда не вызывало проблем и рекомендовано в нескольких местах (Джастином Тадлоком, двумя книгами Wordpress, которые у меня есть, и т.д.), но ни один из этих источников действительно не объясняет, почему.

Итак, что это на самом деле делает, и что произойдет, если оно будет опущено?

Ответ 1

В условиях непрофессионала это слияние массивов.

Он часто используется, потому что он позволяет функции принимать несколько аргументов, не делая код бесполезным. Затем идет следующий шаг, позволяя разработчику устанавливать значения по умолчанию.

Что там, где происходит wp_parse_args, он объединяется с переданными значениями со значениями по умолчанию.

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

Он также преобразует строку запроса URL в массив.

Надеюсь, что это поможет

Ответ 2

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, могут бесконечно расширять число значений, которые могут быть потенциально переданы в них, избегая раздражения сверхсрочных вызовов функций, потому что слишком много аргументов для отслеживания многих единственная функция которой заключается в переопределении обычно хороших значений по умолчанию в редких случаях.

В общем, это упрощает вызов функции, чтобы избежать длительной проверки кода внешний вид/существование и значения по умолчанию переменных, переданных как аргументы

Ответ 3

это код в файле 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;
}