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

WordPress Trac noreply at wordpress.org
Wed Aug 24 13:49:51 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:"53937" 53937]:
 {{{
 #!CommitTicketReference repository="" revision="53937"
 Code Modernization: Remove dynamic properties in `WP_UnitTestCase_Base`.

 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 this particular case, the `scandir()` method sets a dynamic
 `$matched_dirs` property, which is subsequently used in the
 `delete_folders()` method.

 This commit removes the need for the property. Effectively, this changes
 the `scandir()` method to return an array of the matched directories
 instead of setting the property by using recursion in the method itself in
 an optimized manner.

 Note the `array_merge()` not being in the loop itself, but at the very end
 of the function. This is for performance reasons, see
 [https://github.com/dseguy/clearPHP/blob/master/rules/no-array_merge-in-
 loop.md clearPHP: No array_merge() In Loops] for a more detailed
 explanation of this.

 It has been verified in detail that the actual results of the previous
 version of the method and this version match, even when the paths passed
 are more complex and have deeper nested subdirectories.

 Follow-up to [30658], [53557], [53558], [53850], [53851], [53852],
 [53853], [53854], [53856], [53916], [53935], [53936].

 Props jrf, johnbillion, markjaquith, SergeyBiryukov.
 See #56033.
 }}}

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


More information about the wp-trac mailing list