Hey,

Let's try and summarize this discussion and try and see what solution we can come up with.
The change which was made in convert_to_string() is quite problematic. It touches a very fundamental engine function and changes the behavior of tons of places. For example:
a) include $obj; will not error out but convert the object to a string and then include it.
b) $obj[2] = 3; (where $obj implements a __toString function) isn't quite defined anymore. Should this work?
c) $arr[$obj] would suddenly work according the __toString().
Not to say that all sorts of bugs would probably be introduced because all places which call convert_to_string() would have to be checked.


The second patch which automatically calls __toString() on parameters isn't quite as bad but I am really not sure this is what we want. Do we want PHP scripts to become much less readable and have people save their strings in objects and pass those around? How will passing such objects by reference work with extension functions which expect their string parameter to be by reference?

As you can see there are LOTS of problems this would introduce (and most likely more than I could think of).
In the past it was agreed that __toString() would be called explicitly but we would let "print" to be overloaded.


Right now, I think making people call it explicitly is the best way to go and the way Java chose too (not that I thnk we necessarily need to go the same way but there were some smart ppl who thought of these issues before us).

I do think that SimpleXML has to be tailored for because I truly think that it's the best addition to PHP 5 including the new OOP features.
So the question really boils down to what exactly the SimpleXML extension requires? Can't it return a string when it's in read mode?


Let's try and find the right balance between ease-of-use for extensions such as SimpleXML and verbosity and a PHP which is not error-prone and as consistent as possible.
Marcus, reverting the patch was nothing personal. You can see I have technical issues with it. I think you have been doing some great patches and you know it :)


Andi

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to