[support] PHP 5.3 upgrade problems

Pierre Rineau pierre.rineau at makina-corpus.com
Thu Oct 15 17:28:05 UTC 2009


It depends on the parameter type.

If your parameter is a primitive type (int, string, float, bool) or an
array, value will be used (this will be a local variable into your
function), but if you pass a class (stdClass or any other) then it will
be a reference, whether you wrote the & or not.

Regards,
Pierre.

On Thu, 2009-10-15 at 12:35 +0000, Earnie Boyd wrote:
> Quoting andy baxter <andy at earthsong.free-online.co.uk>:
> 
> >
> > I have seen it suggested just to remove the & in cases where the
> > function is expecting an object. Does this make sense in PHP terms?
> >
> 
> Unless the function is defined incorrectly and doesn't use the purpose  
> of pass by reference then it is absolutely incorrect to remove the &  
> from the parameter.  A pass by reference parameter allows changes to  
> the external data.  If you remove & then the changes become local to  
> the function and the resultant change is not seen externally.
> 
> <?php
> $a = 1;
> $b = 2;
> 
> function c(&$c) {
>    $c = $c * 2;
> }
> 
> c($a);
> c($b);
> 
> print $a . "\n";
> print $b . "\n";
> ?>
> 
> Result:
> 2
> 4
> 
> <?php
> $a = 1;
> $b = 2;
> 
> function c($c) {
>    $c = $c * 2;
> }
> 
> c($a);
> c($b);
> 
> print $a . "\n";
> print $b . "\n";
> ?>
> 
> Result:
> 1
> 2
> 
> 
> --
> Earnie
> -- http://r-feed.com/           -- http://for-my-kids.com/
> -- http://www.4offer.biz/       -- http://give-me-an-offer.com/
> 
> 




More information about the support mailing list