Req #62169 [Opn->Wfx]: Use 'global' like a language structure
| From: | nikic@php.net | Date: | Sun, 21 Oct 2012 22:07:25 +0000 |
| Subject: | Req #62169 [Opn->Wfx]: Use 'global' like a language structure | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-174212@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62169&edit=1
ID: 62169
Updated by: nikic@php.net
Reported by: valentiny510 at yahoo dot es
Summary: Use 'global' like a language structure
-Status: Open
+Status: Wont fix
Type: Feature/Change Request
Package: *Programming Data Structures
Operating System: Windows XP
PHP Version: 5.4.3
Block user comment: N
Private report: N
New Comment:
As already noted in this thread, using globals is highly discouraged and as such it does not make
sense to add any further functionality improving their use.
Also (you say this yourself) you can use $GLOBALS. I don't understand why you don't want
to use it. Language features aren't added simply because someone says "Hey, I want to
access globals in one expression, but I don't want to use $GLOBALs, please add a feature that
is fully equivalent but uses a different syntax".
But even with the constraint of not using $GLOBALS you can easily build a function that would do
something equivalent:
function getGlobal($name) {
global $$name;
return $$name;
}
$foo = getGlobal('foo');
Marking this as Wontfix.
Previous Comments:
------------------------------------------------------------------------
[2012-10-21 21:06:48] joost dot koehoorn at gmail dot com
My solution would be to introduce global as a scope identifier, so you could use
it as:
global::$object = new stdClass;
global::$object->test = 'This is just a test';
function test()
{
return global::$object->test;
}
Although I do believe globals are evil and static class variables should be used
at all times, this is a neat addition to avoid the very ugly and unclear global
keyword.
As it is now, you have to define a variable as global for it to resolve and act on
the global variable. This makes code hard to read as it is not directly visible
that this is the case. The above syntax would solve this problem.
------------------------------------------------------------------------
[2012-06-02 01:01:48] valentiny510 at yahoo dot es
Imagine I have unset the, ( $GLOBALS )..
To access a 'global' object into the function, first must be called trowght global..
function test()
{
global $object;
return $object->some_method( );
}
I wonder if is posible to use (in the future :P) the 'global' like other language
structures.. Ex:
function test()
{
return( global $object->some_method( ) );
}
I know ... you will ask me why not use the namespaces, reflections, references, traits, or
whatever.. but .. its not the point ...
------------------------------------------------------------------------
[2012-06-02 00:59:13] valentiny510 at yahoo dot es
In the first line I just wrote: "Imagine I have unset the ($GLOBALS)"
for some reason.. (is ugly, security, memory consumption, the host provider doesn't allow) or
who knows why ...
I know how it works for now but the question is not about how to use "$GLOBALS".
anyway, thanks for the time spent to answer
------------------------------------------------------------------------
[2012-05-30 13:35:41] riptide dot tempora at opinehub dot com
For now:
<?php
function test()
{
return( $GLOBALS['object']->some_method( ) );
}
?>
------------------------------------------------------------------------
[2012-05-26 20:31:16] valentiny510 at yahoo dot es
Description:
------------
Imagine I have the, unset ( $GLOBAL )..
To access a 'global' object into the function, first must be called trowght global..
function test()
{
global $object;
return $object->some_method( );
}
I wonder if is posible to use (in the future :P) the 'global' like other language
structures.. Ex:
function test()
{
return( global $object->some_method( ) );
}
I know ... you will ask me why not use the namespaces, reflections, references, traits, or
whatever.. but .. its not the point ...
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62169&edit=1