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.
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. |