[wp-trac] [WordPress Trac] #62061: Prepare for PHP 8.4

WordPress Trac noreply at wordpress.org
Wed Sep 18 21:19:11 UTC 2024


#62061: Prepare for PHP 8.4
---------------------------------------------+-----------------------------
 Reporter:  jrf                              |       Owner:  (none)
     Type:  task (blessed)                   |      Status:  new
 Priority:  normal                           |   Milestone:  6.7
Component:  General                          |     Version:
 Severity:  normal                           |  Resolution:
 Keywords:  php-84 has-patch has-unit-tests  |     Focuses:  php-
                                             |  compatibility
---------------------------------------------+-----------------------------

Comment (by hellofromTonya):

 In [changeset:"59062" 59062]:
 {{{
 #!CommitTicketReference repository="" revision="59062"
 Code Modernization: Remove xml_set_object() in AtomParser::parse().

 The XML Parser extension still supports a quite dated mechanism for method
 based callbacks, where the object is first set via `xml_set_object()` and
 the callbacks are then set by passing only the name of the method to the
 relevant parameters on any of the `xml_set_*_handler()` functions.

 {{{
 xml_set_object( $parser, $my_obj );
 xml_set_character_data_handler( $parser, 'method_name_on_my_obj' );
 }}}

 Passing proper callables to the `xml_set_*_handler()` functions has been
 supported for the longest time and is cross-version compatible. So the
 above code is 100% equivalent to:

 {{{
 xml_set_character_data_handler( $parser, [$my_obj,
 'method_name_on_my_obj'] );
 }}}

 The mechanism of setting the callbacks with `xml_set_object()` has now
 been deprecated as of PHP 8.4, in favour of passing proper callables to
 the `xml_set_*_handler()` functions. This is also means that calling the
 `xml_set_object()` function is deprecated as well.

 This commit fixes this deprecation for the `AtomParser::parse()` method.

 This change is safeguarded via the new `AtomParser_Parse_Test` class.

 Notes:
 * Though this is "officially" an external library, this package is no
 longer externally maintained. The code style of the fix in the source file
 is in line with the existing code style for the file.
 * It appears that this class is not actually used by WP Core itself, so it
 could be considered to deprecate the class. However, as the class is not
 currently deprecated, safeguarding the change with a test seemed prudent.
 * The fixture used for the test reuses a fixture from the original
 package:
 https://code.google.com/archive/p/phpatomlib/source/default/source
 * The new test class follows the recommended test format (naming
 convention of the class, `@covers` tag at class level, only testing one
 method) as per Trac tickets 62004 / 53010.

 Refs:
 *
 https://wiki.php.net/rfc/deprecations_php_8_4#xml_set_object_and_xml_set_handler_with_string_method_names
 * https://www.php.net/manual/en/function.xml-set-object.php
 * https://www.php.net/manual/en/ref.xml.php

 Follow-up to [5951].

 Props jrf.
 See #62061.
 }}}

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


More information about the wp-trac mailing list