Hello Dmitry, that IS NOT proper code and it wasn't in php 4 either, it was only a workaround that is no longer needed. Had the php 4 design been correct in the first place that wouldn't have been allowed in 4 either. Since BC is not working out anyway i see absolutley no reason to encourage people to continue to missuse php.
marcus Monday, October 3, 2005, 4:05:56 PM, you 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:[EMAIL PROTECTED] >> 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 >> >> Best regards, Marcus -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php