|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
 PatchesPull Requests
Pull requests: 
 HistoryAllCommentsChangesGit/SVN commits              [2017-08-02 16:48 UTC] nikic@php.net
 
-Summary: Different serialization for classes
+Summary: Incorrect xmlrpc serialization for classes with
          declared properties
  [2017-10-04 20:09 UTC] spagalax at yahoo dot com
  [2017-10-04 20:20 UTC] nikic@php.net
 
-Status:      Open
+Status:      Closed
-Assigned To:
+Assigned To: nikic
  [2017-10-04 20:20 UTC] nikic@php.net
 | |||||||||||||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 01:00:01 2025 UTC | 
Description: ------------ xmlrpc_encode and xmlrpc_encode_request works different if the properties $xmlrpc_type and $scalar are defined before assigning values to an object. If the properties $xmlrpc_type and $scalar are defined, xmlrpc_encode* don't use the values for serialization. Test script: --------------- class Foo { } class Bar { public $xmlrpc_type; public $scalar; } $foo = new Foo(); $foo->xmlrpc_type = 'base64'; $foo->scalar = 'foobar'; $bar = new Bar(); $bar->xmlrpc_type = 'base64'; $bar->scalar = 'foobar'; $xml = xmlrpc_encode([ 'foo' => $foo, 'bar' => $bar ]); var_dump($xml); Expected result: ---------------- <?xml version="1.0" encoding="utf-8"?> <params> <param> <value> <struct> <member> <name>foo</name> <value> <base64>Zm9vYmFy
</base64> </value> </member> <member> <name>bar</name> <value> <base64>Zm9vYmFy
</base64> </value> </member> </struct> </value> </param> </params> Actual result: -------------- <?xml version="1.0" encoding="utf-8"?> <params> <param> <value> <struct> <member> <name>foo</name> <value> <base64>Zm9vYmFy
</base64> </value> </member> <member> <name>bar</name> <value> <struct> <member> <name>xmlrpc_type</name> <value> <string>base64</string> </value> </member> <member> <name>scalar</name> <value> <string>foobar</string> </value> </member> </struct> </value> </member> </struct> </value> </param> </params>