ID: 8937
User Update by: [EMAIL PROTECTED]
Status: Closed
Bug Type: Scripting Engine problem
Description: unset() in context with GLOBAL

Of course I know that it is already documented. First mentioned in August 1999!

Havn't mentioned this, cause it is not relevant. A bug is bug, and the other tickets 
have been closed, but the bug was remaining.

4 (or more?) other guys had the same trouble with this behaviour. How many others 
havn't reported this bug? I know minimum 2 others, which havn't.

Sorry, but it IS a bug and a workarround is not a bugfix and my opinion is, that you 
make it too easy for yourself to change the state of this ticket to "closed".

But I will not change it for you. I'll respect your decission.


Previous Comments:
---------------------------------------------------------------------------

[2001-01-26 11:54:16] [EMAIL PROTECTED]
Thats thanks to Bjorn ;) Not my sig..

---------------------------------------------------------------------------

[2001-01-26 11:52:29] [EMAIL PROTECTED]
Have a closer look at

   http://bugs.php.net/bugs.php?id=1971

and the commentary of Zeev. You have to
use unset($GLOBALS["x"]);

-- 
Björn Schotte                        [EMAIL PROTECTED]
http://rent-a-phpwizard.de/          [EMAIL PROTECTED]



---------------------------------------------------------------------------

[2001-01-26 10:25:19] [EMAIL PROTECTED]
unset() in context with GLOBAL has a serious bug. This bug appeard,
when I changed a PHP3-program to PHP4. The problem is now,
that constructs like the following are several times in this old program.

Sorry, I haven't checked, if this problem is fixed in 4.0.4. If so, perhaps someone 
can tell me? TIA.

Think this problem depends Zend, cause ZEND_CHANGES tells me:

"unset() is no longer a function, but a statement.  It was never
documented as a function so the impact should be no bigger than nada."

I have made a test-case:

<?

function test1 ($dir) {
GLOBAL $x;
        unset($x);
        $x[$dir]=true;
        mydirname($dir);
}


function test2 ($dir) {
GLOBAL $x;
####### unset($x);   no unset!
        $x[$dir]=true;
        mydirname($dir);
}

function mydirname ($dir) {
GLOBAL $x;
        $dir=ereg_Replace('/[^/]*$','',$dir);
        if (!empty($dir)) {
                echo "'$dir'<br>"; flush();
                mydirname($dir);
                $x[$dir]=true;
        }
}

$dir="/hugo/bla/fasel/test"; # first char must be '/' !

unset($x);
test1($dir);
echo "DIRS called with function test1(): "; print_r($x);

echo "<br>";

unset($x);
test2($dir);
echo "DIRS called with function test2(): "; print_r($x);

?>

---------------------------------------------------------------------------


Full Bug description available at: http://bugs.php.net/?id=8937


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to