[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