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

WordPress Trac noreply at wordpress.org
Wed Sep 15 22:18: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:"51818" 51818]:
 {{{
 #!CommitTicketReference repository="" revision="51818"
 Options, Meta APIs: Fix "passing null to non-nullable" deprecations to
 `(get|add|update|delete)_option()`.

 In all four of the `get_option()`, `add_option()`, `update_option()` and
 `delete_option()` functions, the `$option` parameter (i.e. the option
 name) is passed to the PHP native `trim()` function without prior input
 validation.

 In PHP 8.1, this could lead to a `trim(): Passing null to parameter #1
 ($string) of type string is deprecated` for each of these functions.

 `trim()`:

 - expects a text string and is only useful when ''passed'' a text string
 as no other variable type can contain whitespace.
 - will always return a `string`, which means that in practice for any non-
 string values passed, it would effectively function as a type cast to
 string.

 This commit:
 - Adds a check to verify the `$option` name is a scalar before processing
 it with `trim()`.
 - The "type cast" behavior is maintained.
 - If the given `$option` name is not a scalar, such as `null`, the fix
 prevents the PHP 8.1 deprecation notice.
 - Tests are added for valid but undesired option names to safeguard
 against regressions.

 This issue is already covered by:
 - the existing `Tests_Option_Option::test_bad_option_names()` test group.
 - the new `test_valid_but_undesired_option_names()` tests.

 Follow-up to [13858], [22633], [23510], [25002], [51817].

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

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


More information about the wp-trac mailing list