ID: 41490 Updated by: [EMAIL PROTECTED] Reported By: simon at highlyillogical dot org -Status: Open +Status: Closed Bug Type: Documentation problem Operating System: Windows/Linux PHP Version: 5.2.2 New Comment:
This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. "The typemap option is an array of type mappings. Type mapping is an array with keys type_name, type_ns (namespace URI), from_xml (callback accepting one string parameter) and to_xml (callback accepting one object parameter)." Previous Comments: ------------------------------------------------------------------------ [2007-06-28 10:19:13] [EMAIL PROTECTED] There is no way to automatic preserve order of objects without breaking compatibility, however as I showed, it is possible to do this with sereral lines of additional code. So nothing to fix (except documentation). ------------------------------------------------------------------------ [2007-06-28 08:31:40] simon at highlyillogical dot org Yeah, I'm happy to write my own serialisers and deserialisers, to work around the problem. (Although it's time consuming -- I don't have to do this in other languages) That 'typemap' trick doesn't seem to be documented anywhere or I'd have gone with it straight away. I haven't made it work in practice yet, but it looks like it should work. I can implement my own complex classes and ensure that I (de)serialize everything in the correct order. ------------------------------------------------------------------------ [2007-06-26 01:00:01] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2007-06-18 14:57:20] [EMAIL PROTECTED] You can access element order using the following trick. <?php $wsdl = "http://zx81.highlyillogical.org/~simon/phpbugtest/phpbugtest.wsdl"; $options=Array( 'typemap' => array(array("type_ns" => "http://zx81.highlyillogical.org/~simon/phpbugtest", "type_name" => "sentence", "from_xml" => "sentence_from_xml")) ); function sentence_from_xml($x) { return simplexml_load_string($x); } $client = new SoapClient($wsdl, $options) ; $result = $client->bugtest(); var_dump($result); foreach ($result as $key => $val) { echo $key . ":" . (string)$val . "\n"; } Actual result: -------------- object(SimpleXMLElement)#2 (3) { ["other"]=> array(3) { [0]=> string(3) "The" [1]=> string(2) "is" [2]=> string(4) "with" } ["noun"]=> array(2) { [0]=> string(3) "cat" [1]=> string(6) "string" } ["verb"]=> string(7) "playing" } other:The noun:cat other:is verb:playing other:with noun:string ------------------------------------------------------------------------ [2007-06-14 09:58:27] simon at highlyillogical dot org In practice, that's not possible. The 'words' example is a much-simplified example of what I want to happen. In reality my document is a sequence of objects of different types, but must remain in the correct order. Think of an XHTML document. It's valid XML and could theoretically be used in a similar way. However, in such a document you've got no idea whether a <p> element, a <ul> element, a <div>, a <form>, or a <table> is coming next... But they do have to have the order retained. If you globbed all of the paragraps together, with all of the unordered lists after, you'd end up with something that didn't make much sense. In fact, if you look at the schema for XHTML (http://www.w3.org/TR/xhtml1-schema/#xhtml1-strict) you can see that it uses exactly this mechanism (xs:choice maxOccurs="unbounded") in order to implement this. (See the "Block" complexType) -- So, if you want to parse soap messages with an XHTML payload correctly, a solution to this problem needs to be found. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/41490 -- Edit this bug report at http://bugs.php.net/?id=41490&edit=1