See my note regarding the fixes we did in the past 1-2 weeks regarding references. It's a huge BC break, and quite frankly, it's not the kind of thing that forces you not to write good code because it's supported.

Andi

At 07:13 AM 10/3/2005, Marcus Boerger wrote:
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


Zend/PHP Conference & Expo
Power Your Business with PHP
October 18-21, 2005 - San Francisco
http://zend.kbconferences.com/
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to