[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