Date: 10/01/00
- Next message: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6962 Updated: Unsetting a global object in a function doesn't affect other functions"
- Previous message: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6969 Updated: operator / assignment presidence"
- Next in thread: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6962 Updated: Unsetting a global object in a function doesn't affect other functions"
- Maybe reply: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6962 Updated: Unsetting a global object in a function doesn't affect other functions"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
ID: 6962
User Update by: rubein <email protected>
Status: Open
Bug Type: Scripting Engine problem
Description: Unsetting a global object in a function doesn't affect other functions
Workaround:
Change:
unset($object);
to:
unset($object);
unset($GLOBALS["object"]);
It seems that while changes to the object affect the global instance of it, unsetting it simply removes the global alias from the script. While my suggested workaround works, it would definitely appear to be a bug.
I'm poking into the source and taking a look at this one, but I don't understand the PHP source that well. I'm curious now though.
Previous Comments:
---------------------------------------------------------------------------
[2000-09-30 15:57:46] rubein <email protected>
script:
<?
class TEST {
var $foo;
}
function one()
{
global $object;
$object = new TEST();
$object->foo = "bar";
echo "none() dump of object before unsetn";
var_dump($object);
unset($object);
echo "none() dump of object after unsetn";
var_dump($object);
two();
}
function two()
{
global $object;
echo "ntwo() dump of object after unsetn";
var_dump($object);
}
echo "<PRE>n";
one();
echo "n(no function) dump of object after unsetn";
var_dump($object);
produces:
one() dump of object before unset
object(test)(1) {
["foo"]=>
string(3) "bar"
}
one() dump of object after unset
NULL
two() dump of object after unset
object(test)(1) {
["foo"]=>
string(3) "bar"
}
(no function) dump of object after unset
object(test)(1) {
["foo"]=>
string(3) "bar"
}
unset()ing an globally defined object within a function doesn't unset it globally - it can still be referred to in other functions.
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=6962
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6962 Updated: Unsetting a global object in a function doesn't affect other functions"
- Previous message: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6969 Updated: operator / assignment presidence"
- Next in thread: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6962 Updated: Unsetting a global object in a function doesn't affect other functions"
- Maybe reply: Bug Database: "[PHP-DEV] PHP 4.0 Bug #6962 Updated: Unsetting a global object in a function doesn't affect other functions"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

