wp_parse_args()
Об’єднує два масиви, так що параметри першого масиву (передані) замінюють при збігу параметри другого масиву (за замовчуванням). Параметри можна вказати рядком.
Зазвичай у функцію передається масив із новими параметрами та масив із параметрами за замовчуванням та функція їх об’єднує. У першому аргументі можна передати параметри у вигляді рядка: text=текст&foo=нечто, вони будуть перетворені на масив.
Ця функція часто використовується в інших функціях WordPress, в яких маються на увазі параметри за замовчуванням і параметри, що передаються, до таких функцій можна віднести get_terms() .
Функцію рекомендується використовувати у функціях, що створюються, в які передається список параметрів. Якщо визначати кожен параметр окремо як це прийнято під час реєстрації функції, список параметрів може бути дуже довгим і незручним. У разі зручніше вказати для функції один параметр $args і всередині функції в масиві вказати параметри за замовчуванням. Потім обробити параметр, що передається за допомогою wp_parse_args() , тим самим об’єднавши передані параметри з дефолтними (див. перший приклад).
wp_parse_str()
register_rest_field()
(дуже швидко) | 50000 разів – 0.08 сек
(швидкість світла) |
PHP 7.1.5, WP 4.8.2
Хуків немає.
Повертає
Массив.
Використання
$ args = wp_parse_args ($ args, $ defaults);
- $args
(рядок/масив/об’єкт) (обов’язковий) Масив параметрів або рядок параметрів, які перезапишуться при збігу параметрів за промовчанням.
Рядок передається у форматі рядка запиту УРЛ:
$args = 'type=post&posts_per_page=5&cat=1';
Масив передається як завжди:
$args = array( 'type'=>'post', 'posts_per_page'=>5, 'cat'=>'1' )
Якщо передати якийсь об’єкт, то функція отримає всі властивості. Властивості стануть масивом властивостей.
$args = (object) array( 'type'=>'post', 'posts_per_page'=>5, 'cat'=>'1' )
- $defaults
(масив) Масив параметрів за замовчуванням, які будуть замінені на параметри, що передаються в $args .
За замовчуванням: array()’
Приклади
#1 Демонстрація передачі параметрів у вигляді рядка
$args = wp_parse_args( 'foo=val & bar=222' );
/*
$args = array {
foo => string(4) "val "
bar => string(2) "222"
}
*/
$args = wp_parse_args( 'foo=val & bar=222', [ 'bar' => 555, 'baz' => 999 ] );
var_dump($args);
/*
$args = array {
bar => string(3) "222"
baz => int(999)
foo => string(4) "val "
}
*/#2 Передача параметрів функції та встановлення дефолтних
Цей приклад показує як за допомогою функції wp_parse_args() вказати параметри функції за замовчуванням і замінювати їх, якщо передано параметр з таким же ключем.
function foo( $args ){
// Визначимо параметри за замовчуванням
$defaults = array(
'param1' => 'значення',
'param2' => true,
'param3' => 3,
);
$ args = wp_parse_args ($ args, $ defaults);
print_r ($ args);
}
foo( 'param1=значення¶m2=0');
/* отримаємо
Array(
[param1] => значення
[param2] => 0
[param3] => 3
)
*/
foo ([
'param1' => 'щось',
'param2' => 0,
]);
/* отримаємо
Array(
[param1] => щось
[param2] => 0
[param3] => 3
)
*/#3 Приклад використання wp_parse_args
wp_parse_args() використовується всередині функції, для визначення параметрів, що передаються в функцію. Цей приклад показує як параметри, що передаються, поєднуються з параметрами за замовчуванням:
// Визначимо параметри за замовчуванням $defaults = array( 'type' => 'post', 'before' => "<p>", 'after' => "</p> n", 'echo' => TRUE ); // об'єднаємо передані параметри $args з параметрами за замовчуванням $ args = wp_parse_args ($ args, $ defaults);
#4 Демонстрація роботи
У цьому прикладі створимо функцію, яка використовує wp_parse_args() та викличемо її в різних варіантах:
/**
* Визначимо нову функцію
*/
function explain_parse_args( $args ) {
$defaults = array(
'text' => 'wp_parse_args() об'єднаємо $args і $defaults',
'before' => "<p>",
'after' => "</p> n",
'echo' => TRUE
);
// Отримаємо вхідні параметри та порівняємо їх з базовими
$ args = wp_parse_args ($ args, $ defaults);
$output = $args['before'] . $args['text'] . $args['after'];
if (! $ echo)
return $output;
echo $output;
}
/**
* Викликаємо функцію без параметрів
* В результаті отримаємо:
* <p>wp_parse_args() об'єднаємо $args і $defaults</p> n
*/
explain_parse_args();
/**
* Викликаємо функцію та вкажемо параметри у вигляді масиву
* Отримаємо:
* <p class='specialclass'>Краща пропозиція</p> n
*/
explain_parse_args(array (
'text' => "Краща пропозиція",
'before' => "<p class='specialclass'>"
)));
/**
* Викликаємо функції та передамо параметри рядком
* Отримаємо:
* <p></p> n
*/
explain_parse_args( 'echo=1&text=0' );
список змін
| З версії 2.2.0 | Введено. |
| З версії 2.3.0 | $args can now also be an object. |
Код wp_parse_args() wp parse args WP 6.0.2
function wp_parse_args( $args, $defaults = array() ) {
if ( is_object( $args ) ) {
$parsed_args = get_object_vars($args);
} elseif ( is_array ( $ args ) ) {
$parsed_args =& $args;
} else {
wp_parse_str($args, $parsed_args);
}
if ( is_array( $defaults ) && $defaults ) {
return array_merge( $defaults, $parsed_args );
}
return $parsed_args;
}