wp_parse_args() WP 2.2.0

Об’єднує два масиви, так що параметри першого масиву (передані) замінюють при збігу параметри другого масиву (за замовчуванням). Параметри можна вказати рядком.

Зазвичай у функцію передається масив із новими параметрами та масив із параметрами за замовчуванням та функція їх об’єднує. У першому аргументі можна передати параметри у вигляді рядка: text=текст&foo=нечто, вони будуть перетворені на масив.

Ця функція часто використовується в інших функціях WordPress, в яких маються на увазі параметри за замовчуванням і параметри, що передаються, до таких функцій можна віднести get_terms() .

Функцію рекомендується використовувати у функціях, що створюються, в які передається список параметрів. Якщо визначати кожен параметр окремо як це прийнято під час реєстрації функції, список параметрів може бути дуже довгим і незручним. У разі зручніше вказати для функції один параметр $args і всередині функції в масиві вказати параметри за замовчуванням. Потім обробити параметр, що передається за допомогою wp_parse_args() , тим самим об’єднавши передані параметри з дефолтними (див. перший приклад).

Працює на основі:
wp_parse_str()
Основа для:
register_rest_field()
1 раз – 0.000018 сек
(дуже швидко) | 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

#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 "
}
*/
0

#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
)
*/
0

#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);
0

#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 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *