[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