[wp-trac] [WordPress Trac] #55656: PHP 8.x: various compatibility fixes for WordPress 6.1
WordPress Trac
noreply at wordpress.org
Mon Sep 26 21:44:54 UTC 2022
#55656: PHP 8.x: various compatibility fixes for WordPress 6.1
-------------------------------------------------+-------------------------
Reporter: hellofromTonya | Owner:
| SergeyBiryukov
Type: task (blessed) | Status: accepted
Priority: normal | Milestone: 6.1
Component: General | Version:
Severity: normal | Resolution:
Keywords: php8 php81 has-patch has-unit-tests | Focuses: coding-
| standards
-------------------------------------------------+-------------------------
Comment (by hellofromTonya):
In [changeset:"54317" 54317]:
{{{
#!CommitTicketReference repository="" revision="54317"
Code Modernization: Fix null to non-nullable deprecation in
`WP_REST_Users_Controller::update_item()`.
Not all requests are accompanied by a `$request['email']`. This leads to a
PHP 8.1 "passing null to non-nullable" deprecation notice when the
`WP_REST_Users_Controller::update_item()` method passes a `null` email
address onto `email_exists()`, which eventually reached the
`WP_User::get_data_by()` method where things go wrong.
In the next condition in the code of the
`WP_REST_Users_Controller::update_item()` method - `if ( $owner_id &&
$owner_id !== $id )` - you can see that the code already takes this into
account as it will not throw a `WP_Error` if `$owner_id` is falsey.
`WP_User::get_data_by()` returns `false` for a failed field request. The
other functions through which the return value is passed through, do the
same.
So, by setting a default value for `$owner_id` of `false` and only
checking `email_exists()` when there is an email to check, the "passing
null to non-nullable" deprecation notice is bypassed without breaking BC.
Fixes a whole slew of test errors along the lines of:
{{{
6) WP_Test_REST_Users_Controller::test_update_item_en_US_locale
trim(): Passing null to parameter https://github.com/WordPress/wordpress-
develop/pull/1 ($string) of type string is deprecated
/var/www/src/wp-includes/class-wp-user.php:211
/var/www/src/wp-includes/pluggable.php:105
/var/www/src/wp-includes/user.php:1953
/var/www/src/wp-includes/rest-api/endpoints/class-wp-rest-users-
controller.php:728
/var/www/src/wp-includes/rest-api/class-wp-rest-server.php:1143
/var/www/src/wp-includes/rest-api/class-wp-rest-server.php:990
/var/www/tests/phpunit/includes/spy-rest-server.php:67
/var/www/tests/phpunit/tests/rest-api/rest-users-controller.php:1719
/var/www/vendor/bin/phpunit:123
}}}
Follow-up to [44641], [38832].
Props jrf.
See #55656.
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/55656#comment:40>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list