Hello Andi,

the problem is that we have many classes that the handler table to behave
mostly like a default php object. We'd need to manually set the cast handler
for all of them.

marcus

Wednesday, March 17, 2004, 9:45:26 AM, you wrote:

> The Exception class should support cast_object(). I don't see why we need 
> to add extra flags.

> Andi

> At 11:45 PM 3/16/2004 +0100, Marcus Boerger wrote:
>>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
>>

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

Reply via email to