Code Modernization: Fix null to non-nullable deprecation in WP_Theme_JSON::get_property_value()
.
This commit aims to fix errors caused by incorrect usage of the strncmp()
function inside the WP_Theme_JSON::get_property_value()
method on PHP 8.1 and above.
Some history of the affected code:
- [50973] introduced the
WP_Theme_JSON::get_property_value()
method.
- [54162] removed the
$default
parameter from the _wp_array_get()
call in the method.
With the latter change, the default value that is returned if the path does not exist within the array, or if $array
or $path
are not arrays, became null
instead of an empty string. Since null
would then be unintentionally passed to the strncmp()
function further in the code, this caused ~35 errors in the test suite along the lines of:
1) Tests_Blocks_Editor::test_get_block_editor_settings_theme_json_settings
strncmp(): Passing null to parameter #1 ($string1) of type string is deprecated
/var/www/src/wp-includes/class-wp-theme-json.php:1754
/var/www/src/wp-includes/class-wp-theme-json.php:1641
/var/www/src/wp-includes/class-wp-theme-json.php:2066
/var/www/src/wp-includes/class-wp-theme-json.php:1002
/var/www/src/wp-includes/class-wp-theme-json.php:898
/var/www/src/wp-includes/global-styles-and-settings.php:140
/var/www/src/wp-includes/block-editor.php:421
/var/www/tests/phpunit/tests/blocks/editor.php:388
/var/www/vendor/bin/phpunit:123
This commit includes:
- Restoring the
$default
value for _wp_array_get()
call.
- Adding an early return if the value is an empty string or
null
.
- Adding a dedicated unit test to ensure that the method returns a string for invalid paths or
null
values.
Follow-up to [50973], [54162].
Props antonvlasenko, jrf, imadarshakshat, SergeyBiryukov.
Fixes #56620.