Docs: Improve documentation of known return types, plus other docs fixes.

See #48303

Built from https://develop.svn.wordpress.org/trunk@46660


git-svn-id: http://core.svn.wordpress.org/trunk@46460 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
John Blackbourn 2019-11-05 21:23:02 +00:00
parent f9e81c83d5
commit f545bb3f63
32 changed files with 178 additions and 120 deletions

View File

@ -452,7 +452,7 @@ function comment_class( $class = '', $comment = null, $post_id = null, $echo = t
* @param string|array $class Optional. One or more classes to add to the class list. Default empty. * @param string|array $class Optional. One or more classes to add to the class list. Default empty.
* @param int|WP_Comment $comment_id Comment ID or WP_Comment object. Default current comment. * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. Default current comment.
* @param int|WP_Post $post_id Post ID or WP_Post object. Default current post. * @param int|WP_Post $post_id Post ID or WP_Post object. Default current post.
* @return array An array of classes. * @return string[] An array of classes.
*/ */
function get_comment_class( $class = '', $comment_id = null, $post_id = null ) { function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
global $comment_alt, $comment_depth, $comment_thread_alt; global $comment_alt, $comment_depth, $comment_thread_alt;

View File

@ -251,7 +251,7 @@ function get_comments( $args = '' ) {
* *
* @since 2.7.0 * @since 2.7.0
* *
* @return array List of comment statuses. * @return string[] List of comment status labels keyed by status.
*/ */
function get_comment_statuses() { function get_comment_statuses() {
$status = array( $status = array(
@ -1163,7 +1163,7 @@ function get_page_of_comment( $comment_ID, $args = array() ) {
* *
* @global wpdb $wpdb WordPress database abstraction object. * @global wpdb $wpdb WordPress database abstraction object.
* *
* @return array Maximum character length for the comment form fields. * @return int[] Array of maximum lengths keyed by field name.
*/ */
function wp_get_comment_fields_max_lengths() { function wp_get_comment_fields_max_lengths() {
global $wpdb; global $wpdb;
@ -1206,7 +1206,7 @@ function wp_get_comment_fields_max_lengths() {
* *
* @since 4.5.0 * @since 4.5.0
* *
* @param array $lengths Associative array `'field_name' => 'maximum length'`. * @param int[] $lengths Array of maximum lengths keyed by field name.
*/ */
return apply_filters( 'wp_get_comment_fields_max_lengths', $lengths ); return apply_filters( 'wp_get_comment_fields_max_lengths', $lengths );
} }
@ -1778,7 +1778,13 @@ function _clear_modified_cache_on_transition_comment_status( $new_status, $old_s
* *
* @since 2.0.4 * @since 2.0.4
* *
* @return array Comment author, email, url respectively. * @return array {
* An array of current commenter variables.
*
* @type string $comment_author The name of the current commenter, or an empty string.
* @type string $comment_author_email The email address of the current commenter, or an empty string.
* @type string $comment_author_url The URL address of the current commenter, or an empty string.
* }
*/ */
function wp_get_current_commenter() { function wp_get_current_commenter() {
// Cookies should already be sanitized. // Cookies should already be sanitized.
@ -1806,9 +1812,9 @@ function wp_get_current_commenter() {
* @param array $comment_author_data { * @param array $comment_author_data {
* An array of current commenter variables. * An array of current commenter variables.
* *
* @type string $comment_author The name of the author of the comment. Default empty. * @type string $comment_author The name of the current commenter, or an empty string.
* @type string $comment_author_email The email address of the `$comment_author`. Default empty. * @type string $comment_author_email The email address of the current commenter, or an empty string.
* @type string $comment_author_url The URL address of the `$comment_author`. Default empty. * @type string $comment_author_url The URL address of the current commenter, or an empty string.
* } * }
*/ */
return apply_filters( 'wp_get_current_commenter', compact( 'comment_author', 'comment_author_email', 'comment_author_url' ) ); return apply_filters( 'wp_get_current_commenter', compact( 'comment_author', 'comment_author_email', 'comment_author_url' ) );

View File

@ -207,7 +207,7 @@ class WP_Customize_Media_Control extends WP_Customize_Control {
* *
* @since 4.9.0 * @since 4.9.0
* *
* @return array An associative array of default button labels. * @return string[] An associative array of default button labels keyed by the button name.
*/ */
public function get_default_button_labels() { public function get_default_button_labels() {
// Get just the mime type and strip the mime subtype if present. // Get just the mime type and strip the mime subtype if present.

View File

@ -381,7 +381,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting {
* @since 4.3.0 * @since 4.3.0
* *
* @param array $nav_menu_options Nav menu options including auto_add. * @param array $nav_menu_options Nav menu options including auto_add.
* @return array (Kaybe) modified nav menu options. * @return array (Maybe) modified nav menu options.
*/ */
public function filter_nav_menu_options( $nav_menu_options ) { public function filter_nav_menu_options( $nav_menu_options ) {
if ( $this->_previewed_blog_id !== get_current_blog_id() ) { if ( $this->_previewed_blog_id !== get_current_blog_id() ) {

View File

@ -58,7 +58,12 @@ function wp_embed_unregister_handler( $id, $priority = 10 ) {
* *
* @param string $url Optional. The URL that should be embedded. Default empty. * @param string $url Optional. The URL that should be embedded. Default empty.
* *
* @return array Default embed parameters. * @return array {
* Indexed array of the embed width and height in pixels.
*
* @type int $0 The embed width.
* @type int $1 The embed height.
* }
*/ */
function wp_embed_defaults( $url = '' ) { function wp_embed_defaults( $url = '' ) {
if ( ! empty( $GLOBALS['content_width'] ) ) { if ( ! empty( $GLOBALS['content_width'] ) ) {

View File

@ -622,7 +622,7 @@ function wpautop( $pee, $br = true ) {
* @since 4.2.4 * @since 4.2.4
* *
* @param string $input The text which has to be formatted. * @param string $input The text which has to be formatted.
* @return array The formatted text. * @return string[] Array of the formatted text.
*/ */
function wp_html_split( $input ) { function wp_html_split( $input ) {
return preg_split( get_html_split_regex(), $input, -1, PREG_SPLIT_DELIM_CAPTURE ); return preg_split( get_html_split_regex(), $input, -1, PREG_SPLIT_DELIM_CAPTURE );

View File

@ -766,7 +766,7 @@ function xmlrpc_removepostdata( $content ) {
* @since 3.7.0 * @since 3.7.0
* *
* @param string $content Content to extract URLs from. * @param string $content Content to extract URLs from.
* @return array URLs found in passed string. * @return string[] Array of URLs found in passed string.
*/ */
function wp_extract_urls( $content ) { function wp_extract_urls( $content ) {
preg_match_all( preg_match_all(
@ -2487,7 +2487,7 @@ function wp_unique_filename( $dir, $filename, $unique_filename_callback = null )
* *
* @param string $name Filename. * @param string $name Filename.
* @param null|string $deprecated Never used. Set to null. * @param null|string $deprecated Never used. Set to null.
* @param mixed $bits File content * @param string $bits File content
* @param string $time Optional. Time formatted in 'yyyy/mm'. Default null. * @param string $time Optional. Time formatted in 'yyyy/mm'. Default null.
* @return array * @return array
*/ */
@ -3003,7 +3003,7 @@ function wp_get_mime_types() {
* *
* @since 4.6.0 * @since 4.6.0
* *
* @return array Array of file extensions types keyed by the type of file. * @return array[] Multi-dimensional array of file extensions types keyed by the type of file.
*/ */
function wp_get_ext_types() { function wp_get_ext_types() {
@ -3014,8 +3014,7 @@ function wp_get_ext_types() {
* *
* @see wp_ext2type() * @see wp_ext2type()
* *
* @param array $ext2type Multi-dimensional array with extensions for a default set * @param array[] $ext2type Multi-dimensional array of file extensions types keyed by the type of file.
* of file types.
*/ */
return apply_filters( return apply_filters(
'ext2type', 'ext2type',
@ -4262,7 +4261,7 @@ function wp_parse_list( $list ) {
* @since 3.0.0 * @since 3.0.0
* *
* @param array|string $list List of ids. * @param array|string $list List of ids.
* @return array Sanitized array of IDs. * @return int[] Sanitized array of IDs.
*/ */
function wp_parse_id_list( $list ) { function wp_parse_id_list( $list ) {
$list = wp_parse_list( $list ); $list = wp_parse_list( $list );
@ -4276,7 +4275,7 @@ function wp_parse_id_list( $list ) {
* @since 4.7.0 * @since 4.7.0
* *
* @param array|string $list List of slugs. * @param array|string $list List of slugs.
* @return array Sanitized array of slugs. * @return string[] Sanitized array of slugs.
*/ */
function wp_parse_slug_list( $list ) { function wp_parse_slug_list( $list ) {
$list = wp_parse_list( $list ); $list = wp_parse_list( $list );
@ -5842,7 +5841,7 @@ function wp_scheduled_delete() {
* @param array $default_headers List of headers, in the format `array( 'HeaderKey' => 'Header Name' )`. * @param array $default_headers List of headers, in the format `array( 'HeaderKey' => 'Header Name' )`.
* @param string $context Optional. If specified adds filter hook {@see 'extra_$context_headers'}. * @param string $context Optional. If specified adds filter hook {@see 'extra_$context_headers'}.
* Default empty. * Default empty.
* @return array Array of file headers in `HeaderKey => Header Value` format. * @return string[] Array of file header values keyed by header name.
*/ */
function get_file_data( $file, $default_headers, $context = '' ) { function get_file_data( $file, $default_headers, $context = '' ) {
// We don't need to write to the file, so just open for reading. // We don't need to write to the file, so just open for reading.

View File

@ -65,7 +65,7 @@ function _wp_scripts_maybe_doing_it_wrong( $function ) {
* @since 2.1.0 * @since 2.1.0
* *
* @param string|bool|array $handles Optional. Scripts to be printed. Default 'false'. * @param string|bool|array $handles Optional. Scripts to be printed. Default 'false'.
* @return array On success, a processed array of WP_Dependencies items; otherwise, an empty array. * @return string[] On success, an array of handles of processed WP_Dependencies items; otherwise, an empty array.
*/ */
function wp_print_scripts( $handles = false ) { function wp_print_scripts( $handles = false ) {
/** /**

View File

@ -37,7 +37,7 @@ function wp_styles() {
* @since 2.6.0 * @since 2.6.0
* *
* @param string|bool|array $handles Styles to be printed. Default 'false'. * @param string|bool|array $handles Styles to be printed. Default 'false'.
* @return array On success, a processed array of WP_Dependencies items; otherwise, an empty array. * @return string[] On success, an array of handles of processed WP_Dependencies items; otherwise, an empty array.
*/ */
function wp_print_styles( $handles = false ) { function wp_print_styles( $handles = false ) {
if ( '' === $handles ) { // for wp_head if ( '' === $handles ) { // for wp_head

View File

@ -3286,7 +3286,7 @@ function wp_resource_hints() {
* *
* @since 4.6.0 * @since 4.6.0
* *
* @return array A list of unique hosts of enqueued scripts and styles. * @return string[] A list of unique hosts of enqueued scripts and styles.
*/ */
function wp_dependencies_unique_hosts() { function wp_dependencies_unique_hosts() {
global $wp_scripts, $wp_styles; global $wp_scripts, $wp_styles;

View File

@ -948,7 +948,7 @@ function wp_kses_split( $string, $allowed_html, $allowed_protocols ) {
} }
/** /**
* Helper function listing HTML attributes containing a URL. * Returns an array of HTML attribute names whose value contains a URL.
* *
* This function returns a list of all HTML attributes that must contain * This function returns a list of all HTML attributes that must contain
* a URL according to the HTML specification. * a URL according to the HTML specification.
@ -959,7 +959,7 @@ function wp_kses_split( $string, $allowed_html, $allowed_protocols ) {
* *
* @since 5.0.1 * @since 5.0.1
* *
* @return array HTML attributes that must include a URL. * @return string[] HTML attribute names whose value contains a URL.
*/ */
function wp_kses_uri_attributes() { function wp_kses_uri_attributes() {
$uri_attributes = array( $uri_attributes = array(
@ -990,7 +990,7 @@ function wp_kses_uri_attributes() {
* *
* @since 5.0.1 * @since 5.0.1
* *
* @param array $uri_attributes HTML attributes requiring validation as a URL. * @param string[] $uri_attributes HTML attribute names whose value contains a URL.
*/ */
$uri_attributes = apply_filters( 'wp_kses_uri_attributes', $uri_attributes ); $uri_attributes = apply_filters( 'wp_kses_uri_attributes', $uri_attributes );

View File

@ -1297,7 +1297,7 @@ function translate_user_role( $name, $domain = 'default' ) {
* *
* @param string $dir A directory to search for language files. * @param string $dir A directory to search for language files.
* Default WP_LANG_DIR. * Default WP_LANG_DIR.
* @return array An array of language codes or an empty array if no languages are present. Language codes are formed by stripping the .mo extension from the language file names. * @return string[] An array of language codes or an empty array if no languages are present. Language codes are formed by stripping the .mo extension from the language file names.
*/ */
function get_available_languages( $dir = null ) { function get_available_languages( $dir = null ) {
$languages = array(); $languages = array();
@ -1318,8 +1318,8 @@ function get_available_languages( $dir = null ) {
* *
* @since 4.7.0 * @since 4.7.0
* *
* @param array $languages An array of available language codes. * @param string[] $languages An array of available language codes.
* @param string $dir The directory where the language files were found. * @param string $dir The directory where the language files were found.
*/ */
return apply_filters( 'get_available_languages', $languages, $dir ); return apply_filters( 'get_available_languages', $languages, $dir );
} }
@ -1386,7 +1386,7 @@ function wp_get_installed_translations( $type ) {
* @since 3.7.0 * @since 3.7.0
* *
* @param string $po_file Path to PO file. * @param string $po_file Path to PO file.
* @return array PO file headers. * @return string[] Array of PO file header values keyed by header name.
*/ */
function wp_get_pomo_file_data( $po_file ) { function wp_get_pomo_file_data( $po_file ) {
$headers = get_file_data( $headers = get_file_data(

View File

@ -625,7 +625,7 @@ function wp_not_installed() {
* @since 3.0.0 * @since 3.0.0
* @access private * @access private
* *
* @return array Files to include. * @return string[] Array of absolute paths of files to include.
*/ */
function wp_get_mu_plugins() { function wp_get_mu_plugins() {
$mu_plugins = array(); $mu_plugins = array();
@ -736,7 +736,7 @@ function wp_skip_paused_plugins( array $plugins ) {
* @since 5.1.0 * @since 5.1.0
* @access private * @access private
* *
* @return array Array of paths to theme directories. * @return string[] Array of absolute paths to theme directories.
*/ */
function wp_get_active_and_valid_themes() { function wp_get_active_and_valid_themes() {
global $pagenow; global $pagenow;
@ -775,7 +775,7 @@ function wp_get_active_and_valid_themes() {
* @since 5.2.0 * @since 5.2.0
* *
* @param string[] $themes Array of absolute theme directory paths. * @param string[] $themes Array of absolute theme directory paths.
* @return string[] Filtered array of themes, without any paused themes. * @return string[] Filtered array of absolute paths to themes, without any paused themes.
*/ */
function wp_skip_paused_themes( array $themes ) { function wp_skip_paused_themes( array $themes ) {
$paused_themes = wp_paused_themes()->get_all(); $paused_themes = wp_paused_themes()->get_all();

View File

@ -845,11 +845,11 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
} }
/** /**
* Gets the available intermediate image sizes. * Gets the available intermediate image size names.
* *
* @since 3.0.0 * @since 3.0.0
* *
* @return array Returns a filtered array of image size strings. * @return string[] An array of image size names.
*/ */
function get_intermediate_image_sizes() { function get_intermediate_image_sizes() {
$default_sizes = array( 'thumbnail', 'medium', 'medium_large', 'large' ); $default_sizes = array( 'thumbnail', 'medium', 'medium_large', 'large' );
@ -864,8 +864,8 @@ function get_intermediate_image_sizes() {
* *
* @since 2.5.0 * @since 2.5.0
* *
* @param array $default_sizes An array of intermediate image sizes. Defaults * @param string[] $default_sizes An array of intermediate image size names. Defaults
* are 'thumbnail', 'medium', 'medium_large', 'large'. * are 'thumbnail', 'medium', 'medium_large', 'large'.
*/ */
return apply_filters( 'intermediate_image_sizes', $default_sizes ); return apply_filters( 'intermediate_image_sizes', $default_sizes );
} }
@ -2436,7 +2436,7 @@ function wp_get_audio_extensions() {
* *
* @param WP_Post $attachment The current attachment, provided for context. * @param WP_Post $attachment The current attachment, provided for context.
* @param string $context Optional. The context. Accepts 'edit', 'display'. Default 'display'. * @param string $context Optional. The context. Accepts 'edit', 'display'. Default 'display'.
* @return array Key/value pairs of field keys to labels. * @return string[] Key/value pairs of field keys to labels.
*/ */
function wp_get_attachment_id3_keys( $attachment, $context = 'display' ) { function wp_get_attachment_id3_keys( $attachment, $context = 'display' ) {
$fields = array( $fields = array(
@ -3046,7 +3046,7 @@ function adjacent_image_link( $prev = true, $size = 'thumbnail', $text = false )
* @param string $output Output type. 'names' to return an array of taxonomy names, * @param string $output Output type. 'names' to return an array of taxonomy names,
* or 'objects' to return an array of taxonomy objects. * or 'objects' to return an array of taxonomy objects.
* Default is 'names'. * Default is 'names'.
* @return array Empty array on failure. List of taxonomies on success. * @return string[]|WP_Taxonomy[] List of taxonomies or taxonomy names. Empty array on failure.
*/ */
function get_attachment_taxonomies( $attachment, $output = 'names' ) { function get_attachment_taxonomies( $attachment, $output = 'names' ) {
if ( is_int( $attachment ) ) { if ( is_int( $attachment ) ) {
@ -3159,7 +3159,12 @@ function wp_imagecreatetruecolor( $width, $height ) {
* @param int $example_height The height of an example embed. * @param int $example_height The height of an example embed.
* @param int $max_width The maximum allowed width. * @param int $max_width The maximum allowed width.
* @param int $max_height The maximum allowed height. * @param int $max_height The maximum allowed height.
* @return array The maximum possible width and height based on the example ratio. * @return int[] {
* An array of maximum width and height values.
*
* @type int $0 The maximum width in pixels.
* @type int $1 The maximum height in pixels.
* }
*/ */
function wp_expand_dimensions( $example_width, $example_height, $max_width, $max_height ) { function wp_expand_dimensions( $example_width, $example_height, $max_width, $max_height ) {
$example_width = (int) $example_width; $example_width = (int) $example_width;
@ -4226,7 +4231,7 @@ function get_post_galleries_images( $post = 0 ) {
* @see get_post_gallery() * @see get_post_gallery()
* *
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global `$post`. * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global `$post`.
* @return array A list of a gallery's image srcs in order. * @return string[] A list of a gallery's image srcs in order.
*/ */
function get_post_gallery_images( $post = 0 ) { function get_post_gallery_images( $post = 0 ) {
$gallery = get_post_gallery( $post, false ); $gallery = get_post_gallery( $post, false );
@ -4312,7 +4317,7 @@ function attachment_url_to_postid( $url ) {
* *
* @since 4.0.0 * @since 4.0.0
* *
* @return array The relevant CSS file URLs. * @return string[] The relevant CSS file URLs.
*/ */
function wpview_media_sandbox_styles() { function wpview_media_sandbox_styles() {
$version = 'ver=' . get_bloginfo( 'version' ); $version = 'ver=' . get_bloginfo( 'version' );

View File

@ -1317,7 +1317,7 @@ function unregister_meta_key( $object_type, $meta_key, $object_subtype = '' ) {
* *
* @param string $object_type The type of object. Post, comment, user, term. * @param string $object_type The type of object. Post, comment, user, term.
* @param string $object_subtype Optional. The subtype of the object type. * @param string $object_subtype Optional. The subtype of the object type.
* @return array List of registered meta keys. * @return string[] List of registered meta keys.
*/ */
function get_registered_meta_keys( $object_type, $object_subtype = '' ) { function get_registered_meta_keys( $object_type, $object_subtype = '' ) {
global $wp_meta_keys; global $wp_meta_keys;

View File

@ -859,9 +859,17 @@ function _update_posts_count_on_transition_post_status( $new_status, $old_status
* *
* @since 5.3.0 * @since 5.3.0
* *
* @param int $network_id The network to get counts for. Default is the current network id. * @param int $network_id Optional. The network to get counts for. Default is the current network ID.
* @return array Includes a grand total 'all' and an array of counts indexed by * @return int[] {
* status strings: public, archived, mature, spam, deleted. * Numbers of sites grouped by site status.
*
* @type int $all The total number of sites.
* @type int $public The number of public sites.
* @type int $archived The number of archived sites.
* @type int $mature The number of mature sites.
* @type int $spam The number of spam sites.
* @type int $deleted The number of deleted sites.
* }
*/ */
function wp_count_sites( $network_id = null ) { function wp_count_sites( $network_id = null ) {
if ( empty( $network_id ) ) { if ( empty( $network_id ) ) {

View File

@ -472,10 +472,8 @@ function get_admin_users_for_domain( $domain = '', $path = '' ) {
* @type int $limit Number of sites to limit the query to. Default 100. * @type int $limit Number of sites to limit the query to. Default 100.
* @type int $offset Exclude the first x sites. Used in combination with the $limit parameter. Default 0. * @type int $offset Exclude the first x sites. Used in combination with the $limit parameter. Default 0.
* } * }
* @return array An empty array if the installation is considered "large" via wp_is_large_network(). Otherwise, * @return array[] An empty array if the installation is considered "large" via wp_is_large_network(). Otherwise,
* an associative array of site data arrays, each containing the site (network) ID, blog ID, * an associative array of WP_Site data as arrays.
* site domain and path, dates registered and modified, and the language ID. Also, boolean
* values for whether the site is public, archived, mature, spam, and/or deleted.
*/ */
function wp_get_sites( $args = array() ) { function wp_get_sites( $args = array() ) {
_deprecated_function( __FUNCTION__, '4.6.0', 'get_sites()' ); _deprecated_function( __FUNCTION__, '4.6.0', 'get_sites()' );

View File

@ -12,7 +12,12 @@
* *
* @since MU (3.0.0) * @since MU (3.0.0)
* *
* @return array Site and user count for the network. * @return int[] {
* Site and user count for the network.
*
* @type int $blogs Number of sites on the network.
* @type int $users Number of users on the network.
* }
*/ */
function get_sitestats() { function get_sitestats() {
$stats = array( $stats = array(
@ -443,7 +448,14 @@ function is_email_address_unsafe( $user_email ) {
* *
* @param string $user_name The login name provided by the user. * @param string $user_name The login name provided by the user.
* @param string $user_email The email provided by the user. * @param string $user_email The email provided by the user.
* @return array Contains username, email, and error messages. * @return array {
* The array of user name, email, and the error messages.
*
* @type string $user_name Sanitized and unique username.
* @type string $orig_username Original username.
* @type string $user_email User email address.
* @type WP_Error $errors WP_Error object containing any errors found.
* }
*/ */
function wpmu_validate_user_signup( $user_name, $user_email ) { function wpmu_validate_user_signup( $user_name, $user_email ) {
global $wpdb; global $wpdb;
@ -559,7 +571,7 @@ function wpmu_validate_user_signup( $user_name, $user_email ) {
* @since MU (3.0.0) * @since MU (3.0.0)
* *
* @param array $result { * @param array $result {
* The array of user name, email and the error messages. * The array of user name, email, and the error messages.
* *
* @type string $user_name Sanitized and unique username. * @type string $user_name Sanitized and unique username.
* @type string $orig_username Original username. * @type string $orig_username Original username.
@ -592,7 +604,16 @@ function wpmu_validate_user_signup( $user_name, $user_email ) {
* @param string $blogname The blog name provided by the user. Must be unique. * @param string $blogname The blog name provided by the user. Must be unique.
* @param string $blog_title The blog title provided by the user. * @param string $blog_title The blog title provided by the user.
* @param WP_User|string $user Optional. The user object to check against the new site name. * @param WP_User|string $user Optional. The user object to check against the new site name.
* @return array Contains the new site data and error messages. * @return array {
* Array of domain, path, blog name, blog title, user and error messages.
*
* @type string $domain Domain for the site.
* @type string $path Path for the site. Used in subdirectory installations.
* @type string $blogname The unique site name (slug).
* @type string $blog_title Blog title.
* @type string|WP_User $user By default, an empty string. A user object if provided.
* @type WP_Error $errors WP_Error containing any errors found.
* }
*/ */
function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) { function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
global $wpdb, $domain; global $wpdb, $domain;
@ -1973,7 +1994,11 @@ function global_terms( $term_id, $deprecated = '' ) {
* @since MU (3.0.0) * @since MU (3.0.0)
* *
* @param array|string $deprecated Not used. * @param array|string $deprecated Not used.
* @return array The current site's domain * @return string[] {
* An array containing the current site's domain.
*
* @type string $0 The current site's domain.
* }
*/ */
function redirect_this_site( $deprecated = '' ) { function redirect_this_site( $deprecated = '' ) {
return array( get_network()->domain ); return array( get_network()->domain );
@ -2577,7 +2602,7 @@ function wp_is_large_network( $using = 'sites', $network_id = null ) {
* *
* @since 4.4.0 * @since 4.4.0
* *
* @return array Array of reserved subdirectory names. * @return string[] Array of reserved names.
*/ */
function get_subdirectory_reserved_names() { function get_subdirectory_reserved_names() {
$names = array( $names = array(

View File

@ -32,7 +32,7 @@ function is_subdomain_install() {
* @access private * @access private
* @since 3.1.0 * @since 3.1.0
* *
* @return array Files to include. * @return string[] Array of absolute paths to files to include.
*/ */
function wp_get_active_network_plugins() { function wp_get_active_network_plugins() {
$active_plugins = (array) get_site_option( 'active_sitewide_plugins', array() ); $active_plugins = (array) get_site_option( 'active_sitewide_plugins', array() );

View File

@ -600,7 +600,7 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
* *
* @param array $args Optional. Array of arguments passed on to get_terms(). * @param array $args Optional. Array of arguments passed on to get_terms().
* Default empty array. * Default empty array.
* @return array Menu objects. * @return WP_Term[] An array of menu objects.
*/ */
function wp_get_nav_menus( $args = array() ) { function wp_get_nav_menus( $args = array() ) {
$defaults = array( $defaults = array(
@ -984,7 +984,7 @@ function wp_setup_nav_menu_item( $menu_item ) {
* @param int $object_id The ID of the original object. * @param int $object_id The ID of the original object.
* @param string $object_type The type of object, such as "taxonomy" or "post_type." * @param string $object_type The type of object, such as "taxonomy" or "post_type."
* @param string $taxonomy If $object_type is "taxonomy", $taxonomy is the name of the tax that $object_id belongs to * @param string $taxonomy If $object_type is "taxonomy", $taxonomy is the name of the tax that $object_id belongs to
* @return array The array of menu item IDs; empty array if none; * @return int[] The array of menu item IDs; empty array if none;
*/ */
function wp_get_associated_nav_menu_items( $object_id = 0, $object_type = 'post_type', $taxonomy = '' ) { function wp_get_associated_nav_menu_items( $object_id = 0, $object_type = 'post_type', $taxonomy = '' ) {
$object_id = (int) $object_id; $object_id = (int) $object_id;

View File

@ -90,7 +90,7 @@ function set_post_format( $post, $format ) {
* *
* @since 3.1.0 * @since 3.1.0
* *
* @return array The array of translated post format names. * @return string[] Array of post format labels keyed by format slug.
*/ */
function get_post_format_strings() { function get_post_format_strings() {
$strings = array( $strings = array(
@ -113,7 +113,7 @@ function get_post_format_strings() {
* *
* @since 3.1.0 * @since 3.1.0
* *
* @return array The array of post format slugs as both keys and values. * @return string[] The array of post format slugs as both keys and values.
*/ */
function get_post_format_slugs() { function get_post_format_slugs() {
$slugs = array_keys( get_post_format_strings() ); $slugs = array_keys( get_post_format_strings() );

View File

@ -706,7 +706,13 @@ function get_children( $args = '', $output = OBJECT ) {
* @since 1.0.0 * @since 1.0.0
* *
* @param string $post Post content. * @param string $post Post content.
* @return array Post before ('main'), after ('extended'), and custom read more ('more_text'). * @return string[] {
* Extended entry info.
*
* @type string $main Content before the more tag.
* @type string $extended Content after the more tag.
* @type string $more_text Custom read more text, or empty string.
* }
*/ */
function get_extended( $post ) { function get_extended( $post ) {
//Match the new style more links. //Match the new style more links.
@ -790,7 +796,7 @@ function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) {
* @since 2.5.0 * @since 2.5.0
* *
* @param int|WP_Post $post Post ID or post object. * @param int|WP_Post $post Post ID or post object.
* @return array Ancestor IDs or empty array if none are found. * @return int[] Ancestor IDs or empty array if none are found.
*/ */
function get_post_ancestors( $post ) { function get_post_ancestors( $post ) {
$post = get_post( $post ); $post = get_post( $post );
@ -930,7 +936,7 @@ function get_post_status( $post = null ) {
* *
* @since 2.5.0 * @since 2.5.0
* *
* @return array List of post statuses. * @return string[] Array of post status labels keyed by their status.
*/ */
function get_post_statuses() { function get_post_statuses() {
$status = array( $status = array(
@ -951,7 +957,7 @@ function get_post_statuses() {
* *
* @since 2.5.0 * @since 2.5.0
* *
* @return array List of page statuses. * @return string[] Array of page status labels keyed by their status.
*/ */
function get_page_statuses() { function get_page_statuses() {
$status = array( $status = array(
@ -1916,7 +1922,7 @@ function post_type_supports( $post_type, $feature ) {
* only one element from the array needs to match; 'and' * only one element from the array needs to match; 'and'
* means all elements must match; 'not' means no elements may * means all elements must match; 'not' means no elements may
* match. Default 'and'. * match. Default 'and'.
* @return array A list of post type names. * @return string[] A list of post type names.
*/ */
function get_post_types_by_support( $feature, $operator = 'and' ) { function get_post_types_by_support( $feature, $operator = 'and' ) {
global $_wp_post_type_features; global $_wp_post_type_features;
@ -4706,7 +4712,7 @@ function add_ping( $post_id, $uri ) {
* @since 1.5.0 * @since 1.5.0
* *
* @param int $post_id Post ID. * @param int $post_id Post ID.
* @return array List of enclosures. * @return string[] Array of enclosures for the given post.
*/ */
function get_enclosed( $post_id ) { function get_enclosed( $post_id ) {
$custom_fields = get_post_custom( $post_id ); $custom_fields = get_post_custom( $post_id );
@ -4833,7 +4839,7 @@ function trackback_url_list( $tb_list, $post_id ) {
* *
* @global wpdb $wpdb WordPress database abstraction object. * @global wpdb $wpdb WordPress database abstraction object.
* *
* @return array List of page IDs. * @return string[] List of page IDs as strings.
*/ */
function get_all_page_ids() { function get_all_page_ids() {
global $wpdb; global $wpdb;
@ -4855,12 +4861,12 @@ function get_all_page_ids() {
* @since 1.5.1 * @since 1.5.1
* @deprecated 3.5.0 Use get_post() * @deprecated 3.5.0 Use get_post()
* *
* @param mixed $page Page object or page ID. Passed by reference. * @param int|WP_Post $page Page object or page ID. Passed by reference.
* @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to
* a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT. * a WP_Post object, an associative array, or a numeric array, respectively. Default OBJECT.
* @param string $filter Optional. How the return value should be filtered. Accepts 'raw', * @param string $filter Optional. How the return value should be filtered. Accepts 'raw',
* 'edit', 'db', 'display'. Default 'raw'. * 'edit', 'db', 'display'. Default 'raw'.
* @return WP_Post|array|null WP_Post (or array) on success, or null on failure. * @return WP_Post|array|null WP_Post or array on success, null on failure.
*/ */
function get_page( $page, $output = OBJECT, $filter = 'raw' ) { function get_page( $page, $output = OBJECT, $filter = 'raw' ) {
return get_post( $page, $output, $filter ); return get_post( $page, $output, $filter );
@ -6293,12 +6299,12 @@ function get_private_posts_cap_sql( $post_type ) {
* @see get_private_posts_cap_sql() * @see get_private_posts_cap_sql()
* @global wpdb $wpdb WordPress database abstraction object. * @global wpdb $wpdb WordPress database abstraction object.
* *
* @param array|string $post_type Single post type or an array of post types. * @param string|string[] $post_type Single post type or an array of post types.
* @param bool $full Optional. Returns a full WHERE statement instead of just * @param bool $full Optional. Returns a full WHERE statement instead of just
* an 'andalso' term. Default true. * an 'andalso' term. Default true.
* @param int $post_author Optional. Query posts having a single author ID. Default null. * @param int $post_author Optional. Query posts having a single author ID. Default null.
* @param bool $public_only Optional. Only return public posts. Skips cap checks for * @param bool $public_only Optional. Only return public posts. Skips cap checks for
* $current_user. Default false. * $current_user. Default false.
* @return string SQL WHERE code that can be added to a query. * @return string SQL WHERE code that can be added to a query.
*/ */
function get_posts_by_author_sql( $post_type, $full = true, $post_author = null, $public_only = false ) { function get_posts_by_author_sql( $post_type, $full = true, $post_author = null, $public_only = false ) {

View File

@ -91,7 +91,7 @@ function set_query_var( $var, $value ) {
* @global WP_Query $wp_query WordPress Query object. * @global WP_Query $wp_query WordPress Query object.
* *
* @param array|string $query Array or string of WP_Query arguments. * @param array|string $query Array or string of WP_Query arguments.
* @return array List of post objects. * @return WP_Post[]|int[] Array of post objects or post IDs.
*/ */
function query_posts( $query ) { function query_posts( $query ) {
$GLOBALS['wp_query'] = new WP_Query(); $GLOBALS['wp_query'] = new WP_Query();

View File

@ -1165,7 +1165,7 @@ function rest_is_boolean( $maybe_bool ) {
* *
* @param mixed $id_or_email The Gravatar to retrieve a URL for. Accepts a user_id, gravatar md5 hash, * @param mixed $id_or_email The Gravatar to retrieve a URL for. Accepts a user_id, gravatar md5 hash,
* user email, WP_User object, WP_Post object, or WP_Comment object. * user email, WP_User object, WP_Post object, or WP_Comment object.
* @return array Gravatar url for each size. * @return array Avatar URLs keyed by size. Each value can be a URL string or boolean false.
*/ */
function rest_get_avatar_urls( $id_or_email ) { function rest_get_avatar_urls( $id_or_email ) {
$avatar_sizes = rest_get_avatar_sizes(); $avatar_sizes = rest_get_avatar_sizes();
@ -1183,7 +1183,7 @@ function rest_get_avatar_urls( $id_or_email ) {
* *
* @since 4.7.0 * @since 4.7.0
* *
* @return array List of pixel sizes for avatars. Default `[ 24, 48, 96 ]`. * @return int[] List of pixel sizes for avatars. Default `[ 24, 48, 96 ]`.
*/ */
function rest_get_avatar_sizes() { function rest_get_avatar_sizes() {
/** /**
@ -1194,7 +1194,7 @@ function rest_get_avatar_sizes() {
* *
* @since 4.4.0 * @since 4.4.0
* *
* @param array $sizes An array of int values that are the pixel sizes for avatars. * @param int[] $sizes An array of int values that are the pixel sizes for avatars.
* Default `[ 24, 48, 96 ]`. * Default `[ 24, 48, 96 ]`.
*/ */
return apply_filters( 'rest_avatar_sizes', array( 24, 48, 96 ) ); return apply_filters( 'rest_avatar_sizes', array( 24, 48, 96 ) );

View File

@ -330,7 +330,7 @@ class WP_REST_Request implements ArrayAccess {
* *
* @since 4.4.0 * @since 4.4.0
* *
* @return array List of types to check, in order of priority. * @return string[] Array of types to check, in order of priority.
*/ */
protected function get_parameter_order() { protected function get_parameter_order() {
$order = array(); $order = array();
@ -366,12 +366,8 @@ class WP_REST_Request implements ArrayAccess {
* *
* @since 4.4.0 * @since 4.4.0
* *
* @param array $order { * @param string[] $order Array of types to check, in order of priority.
* An array of types to check, in order of priority. * @param WP_REST_Request $this The request object.
*
* @param string $type The type to check.
* }
* @param WP_REST_Request $this The request object.
*/ */
return apply_filters( 'rest_request_parameter_order', $order, $this ); return apply_filters( 'rest_request_parameter_order', $order, $this );
} }

View File

@ -780,7 +780,7 @@ class WP_REST_Server {
* *
* @since 4.4.0 * @since 4.4.0
* *
* @return array List of registered namespaces. * @return string[] List of registered namespaces.
*/ */
public function get_namespaces() { public function get_namespaces() {
return array_keys( $this->namespaces ); return array_keys( $this->namespaces );
@ -1017,7 +1017,7 @@ class WP_REST_Server {
* *
* @type string $context Context. * @type string $context Context.
* } * }
* @return array Index entity * @return WP_REST_Response The API root index data.
*/ */
public function get_index( $request ) { public function get_index( $request ) {
// General site data. // General site data.
@ -1100,7 +1100,7 @@ class WP_REST_Server {
* *
* @param array $routes Routes to get data for. * @param array $routes Routes to get data for.
* @param string $context Optional. Context for data. Accepts 'view' or 'help'. Default 'view'. * @param string $context Optional. Context for data. Accepts 'view' or 'help'. Default 'view'.
* @return array Route data to expose in indexes. * @return array[] Route data to expose in indexes, keyed by route.
*/ */
public function get_data_for_routes( $routes, $context = 'view' ) { public function get_data_for_routes( $routes, $context = 'view' ) {
$available = array(); $available = array();
@ -1131,8 +1131,8 @@ class WP_REST_Server {
* *
* @since 4.4.0 * @since 4.4.0
* *
* @param array $available Map of route to route data. * @param array[] $available Route data to expose in indexes, keyed by route.
* @param array $routes Internal route data as an associative array. * @param array $routes Internal route data as an associative array.
*/ */
return apply_filters( 'rest_route_data', $available, $routes ); return apply_filters( 'rest_route_data', $available, $routes );
} }

View File

@ -4377,12 +4377,12 @@ function get_the_taxonomies( $post = 0, $args = array() ) {
} }
/** /**
* Retrieve all taxonomies of a post with just the names. * Retrieve all taxonomy names for the given post.
* *
* @since 2.5.0 * @since 2.5.0
* *
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post.
* @return array An array of all taxonomy names for the given post. * @return string[] An array of all taxonomy names for the given post.
*/ */
function get_post_taxonomies( $post = 0 ) { function get_post_taxonomies( $post = 0 ) {
$post = get_post( $post ); $post = get_post( $post );
@ -4492,7 +4492,7 @@ function is_object_in_taxonomy( $object_type, $taxonomy ) {
* ancestors. Accepts a post type or a taxonomy name. Default empty. * ancestors. Accepts a post type or a taxonomy name. Default empty.
* @param string $resource_type Optional. Type of resource $object_type is. Accepts 'post_type' * @param string $resource_type Optional. Type of resource $object_type is. Accepts 'post_type'
* or 'taxonomy'. Default empty. * or 'taxonomy'. Default empty.
* @return array An array of ancestors from lowest to highest in the hierarchy. * @return int[] An array of IDs of ancestors from lowest to highest in the hierarchy.
*/ */
function get_ancestors( $object_id = 0, $object_type = '', $resource_type = '' ) { function get_ancestors( $object_id = 0, $object_type = '', $resource_type = '' ) {
$object_id = (int) $object_id; $object_id = (int) $object_id;
@ -4529,7 +4529,7 @@ function get_ancestors( $object_id = 0, $object_type = '', $resource_type = '' )
* @since 3.1.0 * @since 3.1.0
* @since 4.1.1 Introduced the `$resource_type` parameter. * @since 4.1.1 Introduced the `$resource_type` parameter.
* *
* @param array $ancestors An array of object ancestors. * @param int[] $ancestors An array of IDs of object ancestors.
* @param int $object_id Object ID. * @param int $object_id Object ID.
* @param string $object_type Type of object. * @param string $object_type Type of object.
* @param string $resource_type Type of resource $object_type is. * @param string $resource_type Type of resource $object_type is.

View File

@ -1973,13 +1973,13 @@ function remove_editor_styles() {
} }
/** /**
* Retrieve any registered editor stylesheets * Retrieve any registered editor stylesheet URLs.
* *
* @since 4.0.0 * @since 4.0.0
* *
* @global array $editor_styles Registered editor stylesheets * @global array $editor_styles Registered editor stylesheets
* *
* @return array If registered, a list of editor stylesheet URLs. * @return string[] If registered, a list of editor stylesheet URLs.
*/ */
function get_editor_stylesheets() { function get_editor_stylesheets() {
$stylesheets = array(); $stylesheets = array();
@ -2019,11 +2019,11 @@ function get_editor_stylesheets() {
} }
/** /**
* Filters the array of stylesheets applied to the editor. * Filters the array of URLs of stylesheets applied to the editor.
* *
* @since 4.3.0 * @since 4.3.0
* *
* @param array $stylesheets Array of stylesheets to be applied to the editor. * @param string[] $stylesheets Array of URLs of stylesheets to be applied to the editor.
*/ */
return apply_filters( 'editor_stylesheets', $stylesheets ); return apply_filters( 'editor_stylesheets', $stylesheets );
} }

View File

@ -395,10 +395,10 @@ function count_user_posts( $userid, $post_type = 'post', $public_only = false )
* *
* @global wpdb $wpdb WordPress database abstraction object. * @global wpdb $wpdb WordPress database abstraction object.
* *
* @param array $users Array of user IDs. * @param int[] $users Array of user IDs.
* @param string|array $post_type Optional. Single post type or array of post types to check. Defaults to 'post'. * @param string|string[] $post_type Optional. Single post type or array of post types to check. Defaults to 'post'.
* @param bool $public_only Optional. Only return counts for public posts. Defaults to false. * @param bool $public_only Optional. Only return counts for public posts. Defaults to false.
* @return array Amount of posts each user has written. * @return string[] Amount of posts each user has written, as strings, keyed by user ID.
*/ */
function count_many_users_posts( $users, $post_type = 'post', $public_only = false ) { function count_many_users_posts( $users, $post_type = 'post', $public_only = false ) {
global $wpdb; global $wpdb;
@ -865,7 +865,12 @@ function update_user_meta( $user_id, $meta_key, $meta_value, $prev_value = '' )
* @param string $strategy Optional. The computational strategy to use when counting the users. * @param string $strategy Optional. The computational strategy to use when counting the users.
* Accepts either 'time' or 'memory'. Default 'time'. * Accepts either 'time' or 'memory'. Default 'time'.
* @param int|null $site_id Optional. The site ID to count users for. Defaults to the current site. * @param int|null $site_id Optional. The site ID to count users for. Defaults to the current site.
* @return array Includes a grand total and an array of counts indexed by role strings. * @return array {
* User counts.
*
* @type int $total_users Total number of users on the site.
* @type int[] $avail_roles Array of user counts keyed by user role.
* }
*/ */
function count_users( $strategy = 'time', $site_id = null ) { function count_users( $strategy = 'time', $site_id = null ) {
global $wpdb; global $wpdb;
@ -2171,7 +2176,7 @@ function wp_create_user( $username, $password, $email = '' ) {
* @access private * @access private
* *
* @param WP_User $user WP_User instance. * @param WP_User $user WP_User instance.
* @return array List of user keys to be populated in wp_update_user(). * @return string[] List of user keys to be populated in wp_update_user().
*/ */
function _get_additional_user_keys( $user ) { function _get_additional_user_keys( $user ) {
$keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'syntax_highlighting', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' ); $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'syntax_highlighting', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' );
@ -2186,7 +2191,7 @@ function _get_additional_user_keys( $user ) {
* @since 3.7.0 * @since 3.7.0
* *
* @param WP_User $user Optional. WP_User object. * @param WP_User $user Optional. WP_User object.
* @return array Array of contact methods and their labels. * @return string[] Array of contact method labels keyed by contact method.
*/ */
function wp_get_user_contact_methods( $user = null ) { function wp_get_user_contact_methods( $user = null ) {
$methods = array(); $methods = array();
@ -2203,8 +2208,8 @@ function wp_get_user_contact_methods( $user = null ) {
* *
* @since 2.9.0 * @since 2.9.0
* *
* @param array $methods Array of contact methods and their labels. * @param string[] $methods Array of contact method labels keyed by contact method.
* @param WP_User $user WP_User object. * @param WP_User $user WP_User object.
*/ */
return apply_filters( 'user_contactmethods', $methods, $user ); return apply_filters( 'user_contactmethods', $methods, $user );
} }
@ -2218,7 +2223,7 @@ function wp_get_user_contact_methods( $user = null ) {
* @access private * @access private
* *
* @param WP_User $user Optional. WP_User object. Default null. * @param WP_User $user Optional. WP_User object. Default null.
* @return array Array of contact methods and their labels. * @return string[] Array of contact method labels keyed by contact method.
*/ */
function _wp_get_user_contactmethods( $user = null ) { function _wp_get_user_contactmethods( $user = null ) {
return wp_get_user_contact_methods( $user ); return wp_get_user_contact_methods( $user );
@ -2660,7 +2665,7 @@ function wp_destroy_all_sessions() {
* @since 4.9.0 The `$site_id` parameter was added to support multisite. * @since 4.9.0 The `$site_id` parameter was added to support multisite.
* *
* @param int|null $site_id Optional. The site ID to get users with no role for. Defaults to the current site. * @param int|null $site_id Optional. The site ID to get users with no role for. Defaults to the current site.
* @return array Array of user IDs. * @return string[] Array of user IDs as strings.
*/ */
function wp_get_users_with_no_role( $site_id = null ) { function wp_get_users_with_no_role( $site_id = null ) {
global $wpdb; global $wpdb;

View File

@ -13,7 +13,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '5.4-alpha-46658'; $wp_version = '5.4-alpha-46660';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.

View File

@ -742,7 +742,12 @@ class wpdb {
* *
* @param string $charset The character set to check. * @param string $charset The character set to check.
* @param string $collate The collation to check. * @param string $collate The collation to check.
* @return array The most appropriate character set and collation to use. * @return array {
* The most appropriate character set and collation to use.
*
* @type string $charset Character set.
* @type string $collate Collation.
* }
*/ */
public function determine_charset( $charset, $collate ) { public function determine_charset( $charset, $collate ) {
if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) { if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) {

View File

@ -20,9 +20,9 @@ if ( empty( $wp ) ) {
* *
* @since 0.71 * @since 0.71
* *
* @param mixed $error Whether there was an error. * @param int|bool $error Whether there was an error.
* Default '0'. Accepts '0' or '1', true or false. * Default '0'. Accepts '0' or '1', true or false.
* @param string $error_message Error message if an error occurred. * @param string $error_message Error message if an error occurred.
*/ */
function trackback_response( $error = 0, $error_message = '' ) { function trackback_response( $error = 0, $error_message = '' ) {
header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ) ); header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ) );