Die Funktion wp_parse_args() ist eine häufig verwendete Funktion im Kern von WordPress. Sie hat viele Verwendungsmöglichkeiten, wird jedoch hauptsächlich zum Binden eines Standardwerts an einen Array-Parameter (args) verwendet.
Da die Funktion wp_parse_args() ein Array zurückgeben muss, konvertiert sie die eingehende Abfragezeichenfolge und das eingehende Objekt automatisch in ein Array, was den Benutzern bequemere Bedingungen bietet und die Kompatibilität erhöht.
Die allgemeinen Funktionen query_posts(), wp_list_comments() und get_terms() verwenden alle die Funktion wp_parse_args(), um ihnen beim Hinzufügen von Standardwerten zu Array-Parametern zu helfen.
Verwendung
wp_parse_args( $args, $defaults );
Parameter
$args
(Array | String) (erforderlich) Abfragezeichenfolge, Objekt oder Array-Parameter, die zum Binden von Standardwerten verwendet werden.
Standard: Keine
Abfragezeichenfolge:
type=post&posts_per_page=5&cat=1
Array:
array( 'type' => 'post', 'posts_per_page' => 5, 'cat' => '1' )
$defaults
(array) (optional) Standardparameter für Array-Parameter.
Standardwert: leere Zeichenfolge
Beispiel
function explain_parse_args( $args = array() ){ //$args 的默认值 $defaults = array( 'before' => '<div>', 'after' => '</div>', 'echo' => true, 'text' => 'wp_parse_args() 函数演示' ); //绑定默认值 $r = wp_parse_args( $args, $defaults ); $output = $r['before'] . $r['text'] . $r['after']; if( !$r['echo'] ) return $output; echo $output; } //没有参数 explain_parse_args();//打印:<div>wp_parse_args() 函数演示</div> //字符串参数 $output = explain_parse_args( 'text=字符串参数&before=<div>&echo=0' ); echo $output;//打印:<div>字符串参数</div> //数组参数 explain_parse_args( array( 'text' => '数组参数', 'before' => '<div>' ) );//打印:<div>数组参数</div> 还有另一种不使用第二个 $defaults 参数的用法,就是帮你把一个查询字符串、对象或者数组的变量直接转换成通用的数组,避免判断类型。 //字符串 $array = wp_parse_args( 'text=测试另一种用法&type=字符串' ); var_dump( $array ); /* array(2) { ["text"]=> string(21) "测试另一种用法" ["type"]=> string(9) "字符串" } */ //对象(object) class args_obj{ public $text = '测试另一种用法'; public $type = '对象(object)'; function func(){ //转换成数组的时候对象里边的函数会被忽略 } } $obj = new args_obj; var_dump( $obj ); /* object(args_obj)#2175 (2) { ["text"]=> string(21) "测试另一种用法" ["type"]=> string(18) "对象(object)" } */
Detaillierter Quellcode der Funktion wp_parse_args
Der Quellcode der Funktion wp_parse_args ist relativ einfach.
Es wird basierend auf den in PHP integrierten Funktionen get_object_vars, array_merge und der Funktion wp_parse_str implementiert.
Das Folgende ist der Quellcode dieser Funktion:
/** * 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; }
Die Funktion get_object_vars wird verwendet, um ein assoziatives Array von Objekteigenschaften zurückzugeben.
Die Funktion array_merge wird verwendet, um die Zellen von zwei oder mehr Arrays zusammenzuführen. Die Werte in einem Array werden an das Ende des vorherigen Arrays angehängt. Gibt das resultierende Array zurück.
Oben wurde eine ausführliche Erklärung der Funktion wp_parse_args zum Synthetisieren von Arrays in WordPress vorgestellt, einschließlich der relevanten Inhalte. Ich hoffe, dass sie für Freunde, die sich für PHP-Tutorials interessieren, hilfreich sein wird.