Make WordPress Core


Ignore:
Timestamp:
08/29/2022 02:05:14 PM (23 months 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.