Bug #16614 Updated: Function called from class treats GLOBAL vars in different way...
| From: | mfischer@php.net | Date: | Sat, 01 Jun 2002 14:07:49 +0000 |
| Subject: | Bug #16614 Updated: Function called from class treats GLOBAL vars in different way... | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-9064@lists.php.net to get a copy of this message | ||
ID: 16614
Updated by: mfischer@php.net
Reported By: daniel@webdevelopers.cz
-Status: Open
+Status: Closed
Bug Type: Class/Object related
Operating System: Windows 2000, Windows XP
PHP Version: 4.1.2
New Comment:
Variables imported with global into the local function scope are
actually references and therefore can't be assigned to another
reference. $GLOBAL is a good workaround for this
However this isn't necessary for ZE2 because you don't need to pass
objects by reference anymore (there's no shallowing coping going on
anymore).
Previous Comments:
------------------------------------------------------------------------
[2002-04-15 10:08:21] vmg@arachnion.de
This error is reproducable for PHP 4.2.0rc1:
First version ($GLOBALS["obj"]=&$ref;) gives:
object(test)(0) {
}
Second version ($obj=&$ref;) gives:
NULL
------------------------------------------------------------------------
[2002-04-15 05:53:47] daniel@webdevelopers.cz
There is the line marked with '#*' in the following script. One line up
you will find other line that should make the exactly same action (I
think). Try to comment this line and uncomment line with '#*'. The
output will differ. Why?
--- SCRIPT: START ---
<PRE><?php
class test {
function test() {
extfunc($this);
}
}
#___________________________________________________________
function extfunc(&$ref) {
global $obj;
$GLOBALS["obj"]=&$ref; # This is the same as '$obj=&$ref;'. Isn't
it?
#* $obj=&$ref;
}
#===========================================================
$test=new test();
var_dump($obj);
?></PRE>
--- SCRIPT: END ---
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=16614&edit=1