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.