Make WordPress Core

Changeset 54037


Ignore:
Timestamp:
08/31/2022 01:05:11 PM (2 years ago)
Author:
SergeyBiryukov
Message:

Code Modernization: Explicitly declare all properties in Services_JSON.

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 $use property, as set in the class constructor, falls in the “known property” category.

Reference: PHP RFC: Deprecate dynamic properties.

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

Props jrf, antonvlasenko, costdev.
See #56033.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-json.php

    r49564 r54037  
    123123{
    124124   /**
     125    * Object behavior flags.
     126    *
     127    * @var int
     128    */
     129   public $use;
     130
     131   /**
    125132    * constructs a new JSON instance
    126133    *
Note: See TracChangeset for help on using the changeset viewer.