Re: Reference return buggy notice?
| From: | M. Sokolewicz | Date: | Fri, 19 Oct 2007 13:49:23 +0000 |
| Subject: | Re: Reference return buggy notice? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-263381@lists.php.net to get a copy of this message | ||
Philip Thompson wrote:
On 10/19/07, Stut <stuttle@gmail.com> wrote:in PHP4 it was occasionally a good idea to use references when assigning objects. As of PHP5 the reasons to use references have been reduced to virtually none. As the manual states "if you think you need to use references, think again, you probably don't." - TulOndra Zizka wrote:I know we went over references (C) in first semester programming. Excuse me if this is too trivial, but why would you want to use a reference? I thought in PHP, specifically, that it is unnecessary to use references. A lil' embarrassed, ~PhilipHello, please look at the code bellow and tell if it does not conform to rulesofreturning a reference from a function. In the first method, I return reference to $sRet variable, and PHP isquiet.But in the second, PHP says: Notice: Only variable references should be returned by reference in C:\web\php_bug_reference_return.php on line 8 // return $ref =& $this->ReturnReference(); (Note that the notice does not concern the first method as the notice appears even if I remove references from the first method.) But I am still just returning a reference to a variable, so I guess it's actually correct, isn't it? Thanks for oppinions. Ondra Zizka <?php class A { function &ReturnReference(){ $sFoo = "Hi."; return $sRet =& $sFoo; } function &RequireReference(){ return $ref =& $this->ReturnReference(); } } $oA = new A(); $ref = $oA->RequireReference(); ?>When you define a function as returning a reference (with the & prefix) you do not need to get the reference yourself, PHP will do it for you. The following should work fine... <?phpclass A { function & ReturnReference() { $sFoo = "Hi."; return $sFoo; }function & RequireReference() { $retval = $this->ReturnReference(); return $retval; } }$oA = new A(); $ref = $oA->RequireReference();?> -Stut