[wp-trac] [WordPress Trac] #56513: PHP 8.2: silence dynamic properties deprecation notices

WordPress Trac noreply at wordpress.org
Tue Oct 11 14:58:18 UTC 2022


#56513: PHP 8.2: silence dynamic properties deprecation notices
------------------------------------+-----------------------------
 Reporter:  jrf                     |       Owner:  SergeyBiryukov
     Type:  task (blessed)          |      Status:  accepted
 Priority:  normal                  |   Milestone:  6.1
Component:  General                 |     Version:  trunk
 Severity:  normal                  |  Resolution:
 Keywords:  has-patch php82 commit  |     Focuses:
------------------------------------+-----------------------------

Comment (by SergeyBiryukov):

 In [changeset:"54481" 54481]:
 {{{
 #!CommitTicketReference repository="" revision="54481"
 Code Modernization: Add `AllowDynamicProperties` attribute to recently
 introduced classes.

 This commit is a follow-up to [54133] for new classes introduced in
 WordPress 6.1 since the previous commit.

 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.

 Trac ticket #56034 is open to investigate and handle the third and fourth
 type of situations, however it has become clear this will need more time
 and will not be ready in time for WP 6.1.

 To reduce “noise” in the meantime, both in the error logs of WP users
 moving onto PHP 8.2, in the test run logs of WP itself, in test runs of
 plugins and themes, as well as to prevent duplicate tickets from being
 opened for the same issue, the `#[AllowDynamicProperties]` attribute has
 been added to all “parent” classes in WP.

 Reference: [https://wiki.php.net/rfc/deprecate_dynamic_properties PHP RFC:
 Deprecate dynamic properties].

 Follow-up to [53922], [54133].

 Props jrf.
 See #56513, #56034.
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/56513#comment:14>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list