Hi Andi, On Mon, Dec 15, 2003 at 02:28:41PM +0200, Andi Gutmans wrote : > We have had this discussion before. There are two extremes to this issue. > The first is to always require the explicit __toString() call and the > second is to never require it and have all places in PHP whether it's > str_replace(), (string)$obj, $arr[$obj] to automatically convert to string. > The latter is problematic because it propagates to far too many places and > causes too much magic in my opinion. > I think the right trade off is to automatically convert it with "print" and > with concatenation. All the rest will require explicit calling. > It might not be your dream but it's a realistic approach.
I understand your concern about too much magic very well. But, isn't it the fact the only people who "know what they're doing" will start to take advantage of __toString ? I cannot imagine that beginners will start to implement their own __toString methods right from the start. Doesn't this limit the number of people who might shoot themselves by a great deal? So, to take advantage that any object has the string-autocast feature one needs to implement __toString. But by the time people do this, they know how it works (else why should the use __toString if they wouldn't know about its advantage [letting alone those poor people naming their methods accidantly __toString]). The option to call __toString on concatenation also will probably result in such code return $someobject . ""; instead of return $someobject->__toString(); - Markus -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php