函数文档

rest_stabilize_value()

💡 云策文档标注

概述

rest_stabilize_value() 函数用于根据 JSON Schema 语义稳定化一个值,确保数据结构的一致性。它递归处理数组,对对象属性进行字母排序,并处理标量值和空值。

关键要点

  • 函数遵循 JSON Schema 语义,稳定化输入值,适用于 REST API 数据处理。
  • 支持标量值(如字符串、数字)和 null,直接返回原值。
  • 对于对象,会触发 _doing_it_wrong() 警告,要求先转换为数组。
  • 对数组使用 ksort() 进行键的字母排序,并递归处理嵌套值。
  • 输入值必须已进行 sanitized 处理,对象应预先转换为数组。

代码示例

function rest_stabilize_value( $value ) {
	if ( is_scalar( $value ) || is_null( $value ) ) {
		return $value;
	}

	if ( is_object( $value ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Cannot stabilize objects. Convert the object to an array first.' ), '5.5.0' );

		return $value;
	}

	ksort( $value );

	foreach ( $value as $k => $v ) {
		$value[ $k ] = rest_stabilize_value( $v );
	}

	return $value;
}

注意事项

  • 在 WordPress 5.5.0 版本中引入此函数。
  • 使用前需确保值已 sanitized,避免安全风险。
  • 对象类型输入会触发错误提示,开发者应预先处理对象转换。

📄 原文内容

Stabilizes a value following JSON Schema semantics.

Description

For lists, order is preserved. For objects, properties are reordered alphabetically.

Parameters

$valuemixedrequired
The value to stabilize. Must already be sanitized. Objects should have been converted to arrays.

Return

mixed The stabilized value.

Source

function rest_stabilize_value( $value ) {
	if ( is_scalar( $value ) || is_null( $value ) ) {
		return $value;
	}

	if ( is_object( $value ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Cannot stabilize objects. Convert the object to an array first.' ), '5.5.0' );

		return $value;
	}

	ksort( $value );

	foreach ( $value as $k => $v ) {
		$value[ $k ] = rest_stabilize_value( $v );
	}

	return $value;
}

Changelog

Version Description
5.5.0 Introduced.