Re: Reference return buggy notice?

From: 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:
Ondra Zizka wrote:
Hello, please look at the code bellow and tell if it does not conform to rules
of
returning a reference from a function. In the first method, I return reference to $sRet variable, and PHP is
quiet.
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... <?php
     class A
     {
         function & ReturnReference()
         {
             $sFoo = "Hi.";
             return $sFoo;
         }
         function & RequireReference()
         {
             $retval = $this->ReturnReference();
             return $retval;
         }
     }
     $oA = new A();
     $ref = $oA->RequireReference();
?> -Stut
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, ~Philip
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." - Tul

« previous php.general (#263381) next »