Make WordPress Core

08/27/2022 12:30:08 PM (23 months ago)

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.


  • 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.


  • 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.

1 edited


  • trunk/tests/phpunit/tests/shortcode.php

    r52010 r53948  
    77    protected $shortcodes = array( 'test-shortcode-tag', 'footag', 'bartag', 'baztag', 'dumptag', 'hyphen', 'hyphen-foo', 'hyphen-foo-bar', 'url', 'img' );
     9    private $atts    = null;
     10    private $content = null;
     11    private $tagname = null;
     13    private $filter_atts_out   = null;
     14    private $filter_atts_pairs = null;
     15    private $filter_atts_atts  = null;
    917    public function set_up() {
    1018        parent::set_up();
    1422        }
    16         $this->atts    = null;
    17         $this->content = null;
    18         $this->tagname = null;
     24        $this->atts              = null;
     25        $this->content           = null;
     26        $this->tagname           = null;
     27        $this->filter_atts_out   = null;
     28        $this->filter_atts_pairs = null;
     29        $this->filter_atts_atts  = null;
    2030    }
Note: See TracChangeset for help on using the changeset viewer.