Changeset 59056
- Timestamp:
- 09/18/2024 06:02:43 PM (9 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/IXR/class-IXR-message.php
r55105 r59056 94 94 xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false); 95 95 // Set XML parser callback functions 96 xml_set_object($this->_parser, $this); 97 xml_set_element_handler($this->_parser, 'tag_open', 'tag_close'); 98 xml_set_character_data_handler($this->_parser, 'cdata'); 96 xml_set_element_handler($this->_parser, array($this, 'tag_open'), array($this, 'tag_close')); 97 xml_set_character_data_handler($this->_parser, array($this, 'cdata')); 99 98 100 99 // 256Kb, parse in chunks to avoid the RAM usage on very large messages -
trunk/tests/phpunit/tests/xmlrpc/message.php
r56547 r59056 31 31 $this->assertSame( array( '1' ), $message->params ); 32 32 } 33 34 /** 35 * Test that the `IXR_Message::parse()` method correctly sets callback functions to handle certain parts of the XML. 36 * 37 * Safeguards handling of the PHP 8.4 deprecation of `xml_set_object()`. 38 * 39 * @covers IXR_Message::parse 40 */ 41 public function test_parse_sets_handlers() { 42 $xml = '<methodResponse><params><param><value>1</value></param></params></methodResponse>'; 43 $message = new class( $xml ) extends IXR_Message { 44 public $tag_open_call_counter = 0; 45 public $tag_close_call_counter = 0; 46 public $cdata_call_counter = 0; 47 48 public function tag_open( $parser, $tag, $attr ) { 49 ++$this->tag_open_call_counter; 50 } 51 public function cdata( $parser, $cdata ) { 52 ++$this->cdata_call_counter; 53 } 54 public function tag_close( $parser, $tag ) { 55 ++$this->tag_close_call_counter; 56 } 57 }; 58 59 $this->assertTrue( $message->parse(), 'XML parsing failed' ); 60 61 $msg = '%s() handler did not get called expected nr of times'; 62 $this->assertSame( 4, $message->tag_open_call_counter, sprintf( $msg, 'tag_open' ) ); 63 $this->assertSame( 4, $message->tag_close_call_counter, sprintf( $msg, 'tag_close' ) ); 64 $this->assertSame( 1, $message->cdata_call_counter, sprintf( $msg, 'cdata' ) ); 65 } 33 66 }
Note: See TracChangeset
for help on using the changeset viewer.