Re: Bug #79647 [Nab]: Conflict between $GLOBALS["now"] and $now
| From: | Murray Collingwood | Date: | Fri, 29 May 2020 11:27:34 +0000 |
| Subject: | Re: Bug #79647 [Nab]: Conflict between $GLOBALS["now"] and $now | ||
| References: | 1 2 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-227231@lists.php.net to get a copy of this message | ||
Thanks for all your feedback. Sorry to be so lame. I come from a 'c'
background where all code is inside a function, and globals are defined
outside of the functions (where no code is allowed). It's different but
may explain my misunderstanding.
You can close this (if it is still open).
Cheers
Murray
On Fri, 29 May 2020 at 18:17, PHP Bug Database <php-bugs@lists.php.net>
wrote:
> ATTENTION! Do NOT reply to this email!
> To reply, use the web interface found at
> https://bugs.php.net/bug.php?id=79647&edit=2
>
> 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
>
>
--
Murray Collingwood
Focus Computing
Australia ph 07 3175 0575
New Zealand ph 03 928 1699
http://www.focus-computing.com.au