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

Reply via email to