You are here: Re: PHP brain teaser « PHP Programming Language « IT news, forums, messages
Re: PHP brain teaser

Posted by Tim Van Wassenhove on 01/13/06 09:31

On 2006-01-13, Tim Van Wassenhove <timvw@users.sourceforge.net> wrote:
> On 2006-01-13, Tim Van Wassenhove <timvw@users.sourceforge.net> wrote:
>> On 2006-01-13, Chung Leong <chernyshevsky@hotmail.com> wrote:
>>> Here's a little brain teaser distilled from a bug that took me a rather
>>> long time to figure out. The two functions in the example below behave
>>> differently. The difference is easy to spot, of ocurse. The challenge
>>> is correctly explaining why this is so. Why does the second function
>>> seemingly corrupt the cloned copy of an object?
>>
>> My guess is the following:
>> When php initializes a new object (copy/clone) it will notice that in the second
>> method the reference count to $obj->attributes is 2. Therefore it will assign
>> new memory for the copied/cloned instance. This explains why we see 0 instead of
>> 14.
>
> Actually, the new memory is not assigned when the constructor is called, but
> when the $obj->attributes['Length'] is set to 0 in the second method (the
> copy-on-write behaviour of php).

My brain is tired now as i'm not able to come up with the right words to explane
what is happening.But the reason for this behaviour is explained in
http://derickrethans.nl/files/phparch-php-variables-article.pdf (see figure 6)


--
Met vriendelijke groeten,
Tim Van Wassenhove <http://timvw.madoka.be>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация