Hello Timm, hello Andi,

i htought i had a better solution to the __toString() problem.
But then i found out why we made it so complex. The reason IIRC
was to prevent __toString() being called everywhere automatically
when it is a user function.

Havin said this the solution is very easy. We expand the signature
of cast_object to inform about exactly this - whether user space
functions may be called or not. From _convert_to_string() we set
that param to zero and from make_printable_zval we set it to 1
and inside the cast function we only need to verify the type of
the function if necessary.

Even better would be to add a flag that disallows usercode functions.
Because with such a flag we do not have a problem if a conversion
calls an internal method which then calls a userspace function which
it shouldn't.

Anid?


Tuesday, March 16, 2004, 10:22:24 PM, you wrote:

> Hi,

> Both of the following examples used to output the
> Exception::__toString() output, which they don't anymore:

> $ php-dev -r '$e= new Exception(); echo $e, "\n";'
> Object id #1

> $ php-dev -r '$e= new Exception(); echo (string)$e, "\n";'
> Object id #1

> Works fine for userland objects:

> $ php-dev -r 'class Foo { function __toString() { return "foo"; }} echo
> new Foo(), "\n";'
> foo

> - Timm




-- 
Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

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

Reply via email to