Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:8551 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 52564 invoked by uid 1010); 17 Mar 2004 08:45:37 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 52416 invoked from network); 17 Mar 2004 08:45:35 -0000 Received: from unknown (HELO mail.zend.com) (192.117.235.230) by pb1.pair.com with SMTP; 17 Mar 2004 08:45:35 -0000 Received: (qmail 29975 invoked from network); 17 Mar 2004 08:45:30 -0000 Received: from guardian.zend.office (HELO AndiNotebook.zend.com) (10.1.1.4) by mail.zend.com with SMTP; 17 Mar 2004 08:45:30 -0000 Message-ID: <5.1.0.14.2.20040317104450.02ab8d90@127.0.0.1> X-Sender: andi@127.0.0.1 X-Mailer: QUALCOMM Windows Eudora Version 5.1 Date: Wed, 17 Mar 2004 10:45:26 +0200 To: Marcus Boerger ,Timm Friebe Cc: internals@lists.php.net In-Reply-To: <162807636437.20040316234546@marcus-boerger.de> References: <1079472144.266.12.camel@localhost> <1079472144.266.12.camel@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: Re: [PHP-DEV] Exception::__toString() not called From: andi@zend.com (Andi Gutmans) 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 > > > - Timm > > > > >-- >Best regards, > Marcus mailto:helly@php.net > >-- >PHP Internals - PHP Runtime Development Mailing List >To unsubscribe, visit: http://www.php.net/unsub.php