[wp-trac] [WordPress Trac] #53635: PHP 8.1: various compatibility fixes
WordPress Trac
noreply at wordpress.org
Mon Aug 16 20:16:28 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-
| standards
--------------------------------------------+------------------------------
Comment (by SergeyBiryukov):
In [changeset:"51622" 51622]:
{{{
#!CommitTicketReference repository="" revision="51622"
Code Modernization: Check the return type of `parse_url()` in
`WP::parse_request()`.
As per the PHP manual:
> If the `component` parameter is omitted, an associative array is
returned.
> If the `component` parameter is specified, `parse_url()` returns a
string (or an int, in the case of `PHP_URL_PORT`) instead of an array. If
the requested component doesn't exist within the given URL, `null` will be
returned.
Reference: [https://www.php.net/manual/en/function.parse-
url.php#refsect1-function.parse-url-returnvalues PHP Manual: parse_url():
Return Values]
In this case, `parse_url()` is called with the `PHP_URL_PATH` as
`$component`. This will return `null` in the majority of cases, as –
exсept for subdirectory-based sites – `home_url()` returns a URL without
the trailing slash, like `http://example.org`.
The return value of `parse_url()` was subsequently passed to `trim()`,
leading to a `trim(): Passing null to parameter #1 ($string) of type
string is deprecated` notice on PHP 8.1.
Fixed by adjusting the logic flow to:
* Only pass the return value of `parse_url()` to follow-on functions if it
makes sense, i.e. if it isn't `null`, nor an empty string.
* Preventing calls to `preg_replace()` and `trim()` further down in the
function logic flow, when `preg_replace()`/`trim()` would have nothing to
do anyhow.
Follow-up to [25617].
Props jrf, hellofromTonya, SergeyBiryukov.
See #53635.
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/53635#comment:35>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list