[wp-trac] [WordPress Trac] #53635: PHP 8.1: various compatibility fixes

WordPress Trac noreply at wordpress.org
Fri Sep 10 17:42:50 UTC 2021


#53635: PHP 8.1: various compatibility fixes
-------------------------------------------------+-------------------------
 Reporter:  SergeyBiryukov                       |       Owner:
                                                 |  hellofromTonya
     Type:  task (blessed)                       |      Status:  accepted
 Priority:  normal                               |   Milestone:  5.9
Component:  General                              |     Version:
 Severity:  normal                               |  Resolution:
 Keywords:  php81 has-patch has-unit-tests       |     Focuses:  coding-
  commit                                         |  standards
-------------------------------------------------+-------------------------

Comment (by hellofromTonya):

 In [changeset:"51801" 51801]:
 {{{
 #!CommitTicketReference repository="" revision="51801"
 Code Modernization: Fix "passing null to non-nullable" deprecation notices
 in `WP_Http::normalize_cookies()`.

 The `Requests_Cookie` class expects valid - non-`null` - attributes to be
 passed, either as an array or as a
 `Requests_Utility_CaseInsensitiveDictionary` object.

 However, the `WP_Http_Cookie::get_attributes()` explicitly sets the
 `expires`, `path` and `domain` index keys in an array with values which
 _may_ be `null`. This will cause `strtotime(): Passing null to parameter
 #1 ($datetime) of type string is deprecated`-like errors when the
 attributes are passed to the `Requests_Cookie` class.

 Note: a `null` value for `path` would generate a similar deprecation
 notice, but for the `preg_match()` function.

 Fixed by using `array_filter()` on the attributes to explicitly filter out
 `null` values before passing the attributes to `Requests_Cookie`.

 Note: I'm choosing to explicitly only filter `null` values. Using
 `array_filter()` without a callback would filter out all "empty" values,
 but that may also remove values which are explicitly set to `false` or
 `0`, which may be valid values.

 Fixes two errors in the `external-http` group in the WordPress Core test
 suite:
 {{{
 1)
 Tests_HTTP_Functions::test_get_response_cookies_with_wp_http_cookie_object
 strtotime(): Passing null to parameter #1 ($datetime) of type string is
 deprecated

 /var/www/src/wp-includes/Requests/Cookie.php:268
 /var/www/src/wp-includes/Requests/Cookie.php:237
 /var/www/src/wp-includes/Requests/Cookie.php:90
 /var/www/src/wp-includes/class-http.php:460
 /var/www/src/wp-includes/class-http.php:349
 /var/www/src/wp-includes/class-http.php:624
 /var/www/src/wp-includes/http.php:162
 /var/www/tests/phpunit/tests/http/functions.php:156

 2) Tests_HTTP_Functions::test_get_cookie_host_only
 strtotime(): Passing null to parameter #1 ($datetime) of type string is
 deprecated

 /var/www/src/wp-includes/Requests/Cookie.php:268
 /var/www/src/wp-includes/Requests/Cookie.php:237
 /var/www/src/wp-includes/Requests/Cookie.php:90
 /var/www/src/wp-includes/class-http.php:460
 /var/www/tests/phpunit/tests/http/functions.php:235
 }}}

 Follow-up to [38164], [45135], [51657].

 Props jrf, hellofromTonya.
 See #53635.
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/53635#comment:102>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list