Re: Static Class Member References

From: Date: Thu, 15 Jul 2010 00:29:34 +0000
Subject: Re: Static Class Member References
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-306898@lists.php.net to get a copy of this message
David Harkness wrote: > Ah, so assigning a reference to a variable already holding a reference > changes that variable's reference only in the same way that unsetting a > reference doesn't unset the other variables referencing the same thing, yes? > > $a = 5; > $b = &$a; > print $a; >> 5 > unset($b); // does not affect $a > print $a; >> 5 > > // and according to Mike's previous message > $b = &$a; > $c = 10; > $b = &$c; // does not affect $a > print $a >> 5 > > That makes a lot of sense. If it didn't work this way there would be no easy > way to untangle references. In the case of > > foreach($array as $key => &$value) { ... } > > the first value in the array would continuously be overwritten by the next > value. > > 1. $value gets reference to first array value > 2. on each step through the loop, the first array value would be overwritten > by the next value in the loop since $value is forever tied to it by the > initial reference assignment. > > That would be a Bad Thing (tm). > > Thanks for the clarification, Mike. > > David > The big "aha" moment for was when realizing that when assigning a reference to a variable you only change its reference and not any other variable that may also have shared the same reference. Yuck that's a mouth full. This happened when Mike said, " NOTE: since we are assigning a new reference to a variable which is already a reference, ONLY this reference changes". Yes, i agree with you David (on both of your points). Thanks for the example using the unset. This further clarified/solidified my understanding. Now, with this new understanding, I also wish to comment that if i assign (without reference) $this, i don't have to be too worried about bloating the memory, b/c i'm only assigning/copying the identifer or *handle* and not the actual object itself. In case, someone reads this in the archive the link is: http://php.net/manual/en/language.oop5.references.php Mike, thank you a ton. Regards. `

« previous php.general (#306898) next »