From 52da9fb6afe0809deafc20d1bbe70f3652e4fcff Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Mon, 9 Aug 2021 17:21:00 +0000 Subject: [PATCH] Code Modernization: Rename the `readonly()` function to `wp_readonly()`. Since PHP 8.1, `readonly` is a reserved keyword and cannot be used as a function name. In order to avoid PHP parser errors, the `readonly()` function was extracted to a separate file and is now only included conditionally on PHP < 8.1. This commit also: * Moves the tests for the `__checked_selected_helper()` function and all the related functions to their own file. * Switches to named data providers. This makes the output when using the `--testdox` option more descriptive and is helpful when trying to debug which data set from a data provider failed the test. * Improves the tests in question to make them feature-complete and expand test coverage. Props jrf, ayeshrajans, haosun, knutsp, swissspidy, SergeyBiryukov. Fixes #53858. Built from https://develop.svn.wordpress.org/trunk@51586 git-svn-id: http://core.svn.wordpress.org/trunk@51197 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/general-template.php | 14 ++++++++++-- wp-includes/php-compat/readonly.php | 35 +++++++++++++++++++++++++++++ wp-includes/version.php | 2 +- 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 wp-includes/php-compat/readonly.php diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php index ab8877f7be..00351b1b93 100644 --- a/wp-includes/general-template.php +++ b/wp-includes/general-template.php @@ -4813,17 +4813,27 @@ function disabled( $disabled, $current = true, $echo = true ) { * * Compares the first two arguments and if identical marks as readonly * - * @since 4.9.0 + * @since 5.9.0 * * @param mixed $readonly One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string HTML attribute or empty string */ -function readonly( $readonly, $current = true, $echo = true ) { +function wp_readonly( $readonly, $current = true, $echo = true ) { return __checked_selected_helper( $readonly, $current, $echo, 'readonly' ); } +/* + * Include a compat `readonly()` function on PHP < 8.1. Since PHP 8.1, + * `readonly` is a reserved keyword and cannot be used as a function name. + * In order to avoid PHP parser errors, this function was extracted + * to a separate file and is only included conditionally on PHP < 8.1. + */ +if ( PHP_VERSION_ID < 80100 ) { + require_once __DIR__ . '/php-compat/readonly.php'; +} + /** * Private helper function for checked, selected, disabled and readonly. * diff --git a/wp-includes/php-compat/readonly.php b/wp-includes/php-compat/readonly.php new file mode 100644 index 0000000000..1e1264631f --- /dev/null +++ b/wp-includes/php-compat/readonly.php @@ -0,0 +1,35 @@ += 8.1 results in a fatal error. + * + * @package WordPress + * @since 5.9.0 + */ + +/** + * Outputs the HTML readonly attribute. + * + * Compares the first two arguments and if identical marks as readonly + * + * This function is deprecated, and cannot be used on PHP >= 8.1. + * + * @since 4.9.0 + * @deprecated 5.9.0 Use `wp_readonly` introduced in 5.9.0. + * + * @see wp_readonly() + * + * @param mixed $readonly One of the values to compare + * @param mixed $current (true) The other value to compare if not just true + * @param bool $echo Whether to echo or just return the string + * @return string HTML attribute or empty string + */ +function readonly( $readonly, $current = true, $echo = true ) { + _deprecated_function( __FUNCTION__, '5.9.0', 'wp_readonly()' ); + return wp_readonly( $readonly, $current, $echo ); +} diff --git a/wp-includes/version.php b/wp-includes/version.php index ea69ef6048..f3d75b599a 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.9-alpha-51585'; +$wp_version = '5.9-alpha-51586'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.