On 14/08/2023 23:56, Rowan Tommins wrote:
> On 14 August 2023 13:40:40 BST, Niels Dossche <[email protected]> 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