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