[wp-trac] [WordPress Trac] #56033: PHP 8.2: explicitly declare all known properties

WordPress Trac noreply at wordpress.org
Sat Aug 27 12:30:23 UTC 2022


#56033: PHP 8.2: explicitly declare all known properties
--------------------------------------------+-----------------------------
 Reporter:  jrf                             |       Owner:  SergeyBiryukov
     Type:  task (blessed)                  |      Status:  accepted
 Priority:  normal                          |   Milestone:  6.1
Component:  General                         |     Version:
 Severity:  normal                          |  Resolution:
 Keywords:  has-patch php82 has-unit-tests  |     Focuses:
--------------------------------------------+-----------------------------

Comment (by SergeyBiryukov):

 In [changeset:"53948" 53948]:
 {{{
 #!CommitTicketReference repository="" revision="53948"
 Code Modernization: Explicitly declare all properties created in
 `set_up()` methods of various test classes.

 Dynamic (non-explicitly declared) properties are deprecated as of PHP 8.2
 and are expected to become a fatal error in PHP 9.0.

 In each of the cases included in this commit, one or more properties are
 dynamically created in the `set_up()` method of the test class. This
 commit explicitly declares these properties.

 As these properties are being declared on test classes, they are marked as
 private. Even though the original dynamic property was public, this should
 not be considered a backward compatibility break as this only involves
 test classes.

 Notes:
 * As these properties receive assignments during test runs or a one-time
 assignment, but the assignment uses a function call or variable access,
 these properties cannot be changed to class constants, but they should be
 declared explicitly as properties on the class.
 * In `Tests_Theme_CustomHeader`, the `$customize_manager` property is
 given a default value of `null`, same as it was already being reset to
 `null` in the `tear_down()` method.
 * In `Tests_Privacy_wpPrivacyProcessPersonalDataExportPage` and
 `Tests_Privacy_wpPrivacyGeneratePersonalDataExportFile` classes, the
 property name had a leading `_` underscore. This is an outdated PHP 4
 practice to indicate a private property. As PHP 4 is no longer supported,
 the property has been renamed to `$orig_error_level`.
 * Along the same lines, in `Tests_Menu_Walker_Nav_Menu`, the property name
 also had a leading `_` underscore. The property has been renamed to
 `$orig_wp_nav_menu_max_depth`.
 * In the `Tests_Shortcode` class, three properties were already being
 (re)set in the `set_up() `method, while three others were being set for
 most tests via the `shortcode_test_shortcode_tag()` method or in the tests
 themselves. It is ensured now that all six properties are given their
 initial `null` value in the `set_up()` method and are explicitly declared.

 Additionally:
 * In the `Tests_User_Session` class, the `set_up()` method is incorrect.
 No assertions should be executed in fixture methods, but the `set_up()`
 method contains two assertions. This has not been addressed yet as it is
 outside the scope of this commit, but should be addressed at a later point
 in time.

 Follow-up to [12/tests], [218/tests], [374/tests], [384/tests],
 [986/tests], [1106/tests], [1239/tests], [28704], [29221], [29347],
 [32648], [36519], [37953], [38832], [40142], [40825], [43584], [43768],
 [44786], [45141], [53557], [53558], [53850], [53851], [53852], [53853],
 [53854], [53856], [53916], [53935], [53936], [53937], [53938], [53942],
 [53945].

 Props jrf.
 See #56033.
 }}}

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


More information about the wp-trac mailing list