酷笔记 > WordPress开发365bet开户网_365bet邮件_365bet提现时间 > wp_parse_args

wp_parse_args


wp_parse_args 函数是 WordPress 内核文件中比较常用到的函数,因为这个函数在很多地方比较实用,所以我也就简单的研究了一下,该函数在 WordPress 中主要被用来处理函数接受的参数,并将参数组装为数组的一个函数。

函数用法

wp_parse_args 函数可以将一个对象、参数字符串、数组与预设的数组整合并返回一个新的数组。
因为函数使用起来很简单,所以只给一个简单的例子

$r?=?wp_parse_args(?$args,?$defaults?);

参数

  • $args:函数接收到的参数
  • $defaults:函数的默认参数(一些参数没有设置的情况下的预设值)

来看一下,WordPress 中是怎么使用这个函数的
以下截自 WordPress 内置get_post()函数

function?get_posts($args?=?null)?{
$defaults?=?array(
//设置预设值
'numberposts'?=>?5,
?'offset'?=>?0,
'category'?=>?0,?
'orderby'?=>?'post_date',
'order'?=>?'DESC',?
'include'?=>?array(),
'exclude'?=>?array(),?
'meta_key'?=>?'',
'meta_value'?=>'',
?'post_type'?=>?'post',
'suppress_filters'?=>?true);
//将接收的?$args参数与$defaults整合,返回给$r变量
$r?=?wp_parse_args(?$args,?$defaults?);
if?(?empty(?$r['post_status']?)?)
//以下省略其他无用代码//......
}

wp_parse_args函数源代码详解

wp_parse_args 函数的源代码比较简单,
依附于PHP 内置函数get_object_vars、array_merge与WordPress的wp_parse_str函数来实现,
以下是该函数的源代码:

/**
?*?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
?*
?*第一个参数可以是?字符串、数组或对象(obj)
?*?@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?))?//?将接收的对象(obj)转换为数组
	$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;
}

其中get_object_vars函数是用来返回由对象属性组成的关联数组。

array_merge函数用是将两个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

wp_parse_str函数

也是一个 WordPress 的内置函数,
详细就不写了,函数主要是用来将一个带参数的字符串转化为一个数组,
主要是用到了PHP内置的parse_str函数。
源代码如下:

function?wp_parse_str($string,?&$array)?{
parse_str?(?$string,?$array?);
if?(get_magic_quotes_gpc?())
$array?=?stripslashes_deep?(?$array?);
$array?=?apply_filters?(?'wp_parse_str',?$array?);
}

上一篇:
下一篇: