Bug #79647 [Nab]: Conflict between $GLOBALS["now"] and $now

From: Date: Fri, 29 May 2020 08:15:27 +0000
Subject: Bug #79647 [Nab]: Conflict between $GLOBALS["now"] and $now
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-227230@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79647&edit=1 ID: 79647 Updated by: cmb@php.net Reported by: murray at focus-computing dot com dot au Summary: Conflict between $GLOBALS["now"] and $now Status: Not a bug Type: Bug Package: Scripting Engine problem Operating System: All PHP Version: 7.3.18 Assigned To: cmb Block user comment: N Private report: N New Comment: Thanks. Previous Comments: ------------------------------------------------------------------------ [2020-05-29 08:05:22] bugreports at gmail dot com > The variable defined outside of a function or class is simply > a local variable outside of a function or class to make it clear - it even is - but yoz have to replace "local" with "scope" and $GLOBALS is to access variables in the global scope from functions/methods it's all about scopes ------------------------------------------------------------------------ [2020-05-29 07:54:37] bugreports at gmail dot com > I've been programming with PHP for about 15 years now. I've always > assumed the $GLOBALS was a reference to an array of variables > unrelated to the variables defined outside of functions and classes. it's heroic to state that one did not understand lanuage basics withn 15 years of usage and even proposes to change basic concepts https://www.php.net/manual/en/reserved.variables.globals.php https://www.php.net/manual/en/language.variables.scope.php An associative array containing references to all variables which are currently defined in the global scope of the script. The variable names are the keys of the array. > The variable defined outside of a function or class is simply > a local variable outside of a function or class nonsense - you had 15 years time to learn some basics like https://www.php.net/manual/en/language.variables.scope.php frankly if you write $GLOBALÖS['foo'] or global $foo withina function is the same and when you write $GLOBALS in the global scope you waste performance for no good reason (useless ) php > echo $GLOBALS['x']; filename: php shell code function name: (null) number of ops: 4 compiled vars: none line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 1 0 E > FETCH_R global ~0 'GLOBALS' 1 FETCH_DIM_R ~1 ~0, 'x' 2 ECHO ~1 2 3 > RETURN null branch: # 0; line: 1- 2; sop: 0; eop: 3; out0: -2 path #1: 0, php > echo $x; filename: php shell code function name: (null) number of ops: 2 compiled vars: !0 = $x line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 1 0 E > ECHO !0 2 1 > RETURN null branch: # 0; line: 1- 2; sop: 0; eop: 1; out0: -2 path #1: 0, php > ------------------------------------------------------------------------ [2020-05-28 23:49:12] requinix@php.net > I would also like to propose that these should be treated as separate. The > variable defined outside of a function or class is simply a local variable > outside of a function or class. I have a counter-proposal for you: Don't use $GLOBALS. ------------------------------------------------------------------------ [2020-05-28 23:22:22] murray at focus-computing dot com dot au I've been programming with PHP for about 15 years now. I've always assumed the $GLOBALS was a reference to an array of variables unrelated to the variables defined outside of functions and classes. I would also like to propose that these should be treated as separate. The variable defined outside of a function or class is simply a local variable outside of a function or class. ------------------------------------------------------------------------ [2020-05-28 13:45:07] bugreports at gmail dot com $GLOBALS["now"] and $now are the same variable in the global scope and there is no point to write $GLOBALS at all outside functions <?php $GLOBALS["now"] = time(); print "Year is " . strftime("%Y", $GLOBALS["now"]) . "\n"; $now = new DateTime("now"); print "Year is " . strftime("%Y", $GLOBALS["now"]) . "\n"; ?> versus <?php test(); function test() { $GLOBALS["now"] = time(); print "Year is " . strftime("%Y", $GLOBALS["now"]) . "\n"; $now = new DateTime("now"); print "Year is " . strftime("%Y", $GLOBALS["now"]) . "\n"; } ?> ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=79647 -- Edit this bug report at https://bugs.php.net/bug.php?id=79647&edit=1

« previous php.bugs (#227230) next »