Code Modernization: Change create_function() in phpunit/includes/plural-form-function.php to closure.

`create_function()` has been deprecated in PHP >= 7.2 and removed in PHP 8.

The only instance left in core was used in a test that was being skipped on PHP >= 7.2. This allows the test to run again.

Follow-up to [41722], [41730].

Props jrf.
Fixes #50899.

git-svn-id: https://develop.svn.wordpress.org/trunk@48790 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2020-08-13 12:32:03 +00:00
parent ab9aee8af4
commit f0733600c9
2 changed files with 9 additions and 10 deletions

View File

@ -7,11 +7,14 @@
* @param string $expression
*/
function tests_make_plural_form_function( $nplurals, $expression ) {
$expression = str_replace( 'n', '$n', $expression );
$func_body = "
\$index = (int)($expression);
return (\$index < $nplurals)? \$index : $nplurals - 1;";
$closure = function ( $n ) use ( $nplurals, $expression ) {
$expression = str_replace( 'n', $n, $expression );
// phpcs:ignore WordPress.PHP.RestrictedPHPFunctions.create_function_create_function
return create_function( '$n', $func_body );
// phpcs:ignore Squiz.PHP.Eval -- This is test code, not production.
$index = (int) eval( 'return ' . $expression . ';' );
return ( $index < $nplurals ) ? $index : $nplurals - 1;
};
return $closure;
}

View File

@ -74,10 +74,6 @@ class PluralFormsTest extends WP_UnitTestCase {
* @group external-http
*/
public function test_regression( $lang, $nplurals, $expression ) {
if ( version_compare( phpversion(), '7.2', '>=' ) ) {
$this->markTestSkipped( 'Lambda functions are deprecated in PHP 7.2' );
}
require_once dirname( dirname( __DIR__ ) ) . '/includes/plural-form-function.php';
$parenthesized = self::parenthesize_plural_expression( $expression );