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

Reply via email to