Re: $ref =& $this;
| From: | Andi Gutmans | Date: | Mon, 03 Oct 2005 14:29:30 +0000 |
| Subject: | Re: $ref =& $this; | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-19348@lists.php.net to get a copy of this message | ||
Hey,
I was the original person that started disallowing assigning $this by reference.
Question really boils down to, how is this different from the reference fixes we did a couple of weeks ago, where due to too many apps breaking (and a lot broke) we created a work-around for this behavior with a warning.
I think this case is pretty much identical, so we should probably treat it as such and escalate to error in 6.0.
And
At 06:09 AM 10/3/2005, Derick Rethans wrote:
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 {Zend/PHP Conference & Expo Power Your Business with PHP October 18-21, 2005 - San Francisco http://zend.kbconferences.com/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