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.