Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:19350 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 93785 invoked by uid 1010); 3 Oct 2005 14:32:52 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 93769 invoked from network); 3 Oct 2005 14:32:52 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Oct 2005 14:32:52 -0000 X-Host-Fingerprint: 80.74.107.235 mail.zend.com Linux 2.5 (sometimes 2.4) (4) Received: from ([80.74.107.235:60729] helo=mail.zend.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 3B/5D-54476-31141434 for ; Mon, 03 Oct 2005 10:32:52 -0400 Received: (qmail 21246 invoked from network); 3 Oct 2005 14:32:48 -0000 Received: from localhost (HELO ANDI-NOTEBOOK.zend.com) (127.0.0.1) by localhost with SMTP; 3 Oct 2005 14:32:48 -0000 Message-ID: <6.2.3.4.2.20051003073141.0351a3d0@localhost> X-Mailer: QUALCOMM Windows Eudora Version 6.2.3.4 Date: Mon, 03 Oct 2005 07:32:27 -0700 To: "Dmitry Stogov" ,"'Derick Rethans'" , "'PHP Developers Mailing List'" In-Reply-To: <002a01c5c823$97c04d20$e902a8c0@thinkpad> References: <002a01c5c823$97c04d20$e902a8c0@thinkpad> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: RE: [PHP-DEV] $ref =& $this; From: andi@zend.com (Andi Gutmans) Assigning to it will break "this" in the symbol table, or EG(This)? If it's the latter then it is a problem (and it's the reason I didn't support it to begin with). Andi At 07:05 AM 10/3/2005, Dmitry Stogov wrote: >Hi, > >At first $ref =& $this; produced fatal error because of the bug (not by >design). >For example $ref->prop =& $this; worked and works without errors. > >So my patch shouldn't be reverted in any case. > >At second disallowing such assignments and passign $this by reference will >breake a lot of PHP4 code (Mamaba CMS). >In PHP4 passing $object by refernce and by value had completely different >semantic. > >I don't see any reason to disallow 100% proper code (like the the >following). > >class Child { > function Child($parent) { > $parent->children[] =& $this; > } >} > >Of course using "=& $this" user can breake $this value, but other languages >(C++) allows this too. >I don't think we should be paranoiacs. > >Thanks. Dmitry. > > > > -----Original Message----- > > From: Derick Rethans [mailto:derick@php.net] > > Sent: Monday, October 03, 2005 5:09 PM > > To: PHP Developers Mailing List > > Subject: [PHP-DEV] $ref =& $this; > > > > > > Hello, > > > > Dmitry committed a fix earlier to ignore the & in the > > statement above. I > > think this is not a good thing to do as it's simply > > conceptually wrong. > > The first thing is that ignoring syntax without issuing a warning is > > dubious because people might think it does actually work, and > > secondly > > because I think that the code above is wrong anyway - somewhat in the > > same way that "$this = new foo();" is wrong. > > > > There is never any need to assign $this by reference, nor to > > pass it by > > reference to a function as it's an object anyway, making the > > references > > pointless - I would even go as far as disallowing passing $this by > > references to a function - where the reference has to be > > ignored again, > > otherwise it allows you to chantge $this to a different object with: > > > > class Foo { > > function byRef(&$f) { > > $f = new Bar(); > > } > > > > function modifyThis() { > > $this->byRef($this); > > } > > } > > > > I think we should prevent people from writing syntax like > > this, as it is > > not obvious what is going to happen. This means that we should revert > > Dmitry's patch. > > > > regards, > > Derick > > > > -- > > Derick Rethans > > http://derickrethans.nl | http://ez.no | http://xdebug.org > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > >-- >PHP Internals - PHP Runtime Development Mailing List >To unsubscribe, visit: http://www.php.net/unsub.php Zend/PHP Conference & Expo Power Your Business with PHP October 18-21, 2005 - San Francisco http://zend.kbconferences.com/