Make WordPress Core

Changeset 53954


Ignore:
Timestamp:
08/29/2022 02:05:14 PM (4 years ago)
Author:
SergeyBiryukov
Message:

Code Modernization: Explicitly declare all properties in POMO_Reader et al.

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

There are a number of ways to mitigate this:

  • If it is an accidental typo for a declared property: fix the typo.
  • For known properties: declare them on the class.
  • For unknown properties: add the magic __get(), __set(), et al. methods to the class or let the class extend stdClass which has highly optimized versions of these magic methods built in.
  • For unknown use of dynamic properties, the #[AllowDynamicProperties] attribute can be added to the class. The attribute will automatically be inherited by child classes.

In this case, the $is_overloaded property and the $_f property fall in the “known property” category. In both cases, these are being set in the __construct() method of the class they apply to.

The $_post property appears to be a typo however. The $_post property looks to be unused, while there is an undeclared integer $_pos (“position”) property, which is used throughout the class and used by the child classes.

Reference: ​PHP RFC: Deprecate dynamic properties.

Follow-up to [11626], [12174], [53557], [53558], [53850], [53851], [53852], [53853], [53854], [53856], [53916], [53935], [53936], [53937], [53938], [53942], [53945], [53948], [53949], [53952], [53953].

Props jrf, antonvlasenko, costdev.
See #56033.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/pomo/streams.php

    r52696 r53954  
    1313
    1414                public $endian = 'little';
    15                 public $_post  = '';
     15                public $_pos;
     16                public $is_overloaded;
    1617
    1718                /**
    … …  
    154155
    155156                /**
     157                 * File pointer resource.
     158                 *
     159                 * @var resource|false
     160                 */
     161                public $_f;
     162
     163                /**
    156164                 * @param string $filename
    157165                 */
Note: See TracChangeset for help on using the changeset viewer.