On 14/08/2023 23:56, Rowan Tommins wrote: > On 14 August 2023 13:40:40 BST, Niels Dossche <dossche.ni...@gmail.com> wrote: >>And you load it into simpleXML, the result of calling >>json_encode($the_simplexml_object) > > My usual reaction to this is "why would you take an object designed for > accessing parts of an XML document, and serialise it to JSON?" Often, the > answer turns out to be "because I don't understand SimpleXML objects, and > have copied and pasted a weird hack to get a less useful array representation > by round-tripping to JSON". >
That's fair, I'm just trying to hear what people want here :-) > On the other hand, the fact that the *debug* representation of SimpleXML > objects misses out some parts causes a lot of confusion, and I've actually > considered the *opposite* of what you suggest - leave the JSON alone, because > people will have written production code based on it, but make the debug > array more descriptive of how to use the object. > I agree the debug info is lackluster at the moment. e.g. If you var_dump a simpleXML object you don't even see the name or the type. So when you're debugging it becomes a bit more difficult to see what you're working with. Similarly, a getType() method would be handy to verify what's actually "behind" the simpleXML object. > (...) > > Ultimately, I'm not that interested in trying to come up with a JSON or array > representation that covers every possibility, because I think the only > consistent answer would be horribly verbose - basically, describe every > property that DOM would expose on each node. Probably yeah, I tried to come up with something but it was indeed verbose. > For debug output, the main concern is showing what you'll get with various > styles of access in SimpleXML, so a single "@text" => "foobarbaz" would make > sense; or maybe even "(string)" => "foobarbaz" and rename "@attributes" to > "->attributes()" Having "->method()" might look a bit weird, at least I haven't seen something like this in other PHP extensions. Although it is more descriptive than "@attributes", because people may be led to believe you can do $simpleXML->{"@attributes"} or something like that. Adding a name and type in the output is also necessary I think. Making such changes probably requires an RFC and some bikeshedding to make sure everyone agrees on it. > > Regards, > Kind regards -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php