Hello Moriyoshi, Monday, December 1, 2003, 2:56:29 PM, you wrote:
> On 2003/12/01, at 19:39, Andi Gutmans wrote: >> At 12:50 AM 12/1/2003 -0500, Adam Maccabee Trachtenberg wrote: >>> On Sun, 30 Nov 2003, Andi Gutmans wrote: >>> >>> > At 11:59 AM 11/28/2003 -0500, Adam Maccabee Trachtenberg wrote: >>> >>> > >As far as I'm concerned, if you don't want your object to be >>> > >auomatically cast to a string, you shouldn't provide a __toString() >>> > >method. >>> > >>> > Wrong. __toString() isn't supposed to work in every case the engine >>> expects >>> > a string. >>> > You'd probably also want $obj[3] to work as a string offset? >>> > In this case, maybe we should rename __toString to __toPrintable, >>> because I >>> > think Marcus' patch is asking for trouble. >>> >>> Maybe I'm the one who is confused. What's the point of having a magic >>> __toString() method (or __toPrintable()) if it doesn't let the object >>> pretend it's a string? >>> >>> You're saying it's okay to do: >>> >>> class foo { >>> public function __toString() { >>> return "foo"; >>> } >>> } >>> >>> $obj = new foo; >>> print $foo; >>> >>> But not: >>> >>> print htmlentities($foo); >>> >>> That makes absolutely no sense to me. What if __toString() returns >>> characters that need encoding? Or if I want to do anything else with >>> the output other than just print it out? >>> >>> If I don't want automatic type casting to happen, I don't define >>> __toString(), but myToString(), which I call when I need to convert >>> the >>> object to a string. >> >> __toString() is not used for automatic type casting. It is used as a >> convention *and* to make it nice to print objects. If you need >> anything more than that then call it explicitly. It would be a >> nightmare to modify the engine the way you are thinking and many >> extensions would be fixed. > Probably I didn't catch up with the discussion, but I once mentioned > that automatic type casting is quite useful to implement a > internationalized > string container class. I think it's not only for giving > human-readable string representation but it even more makes > sense to me in practice. Well we had all we wanted to make ext/simplexml and such a thing working but now it is all for nothing....shitty code! -- Best regards, Marcus mailto:[EMAIL PROTECTED] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php