globals and super globals

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View


I'm looking for the best way to deal with globals in PHP.

As a 'C' software developer, I would normally avoid all
globals and not have any at all, but use structs and pass
everything in the function parameters...

However, being realistic, I can see that globals can (and
do ?) have a place in PHP web scripts.

As I see it, there are two approaches:

1) go with globals,

2) avoid globals.

Looking at (1)

Sure, I can just put a 'global $a' at the start of every
function that requires the use of the global '$a', but its
an easy mistake to forget this, and would not cause an error
('$a' will be read as NULL).

So, is there a way for a script to declare that a variable
should be a 'superglobal', just like $_SERVER is.

If not - could this be a useful addition to PHP ?

Looking at (2)

If I put all my globals into an array/hashtable, eg.

$superglobal['a'] = 'hello world';

then this emulates the idea of a 'struct' in 'C', and I can
pass it through all my functions (or not bother with doing
that and use it as my one and only global).


I prefer the idea of (2), but I wonder if its just going too
far ? Would anyone suggest what the prefered way of having and
using globals is ?

Could 'SUPERGLONAL' be added to PHP, to decalre a variable to be
superglobal ?

All thoughts welcome...


Re: globals and super globals


Quoted text here. Click to load it

PHP will show a notice when attempting to read an unitialized variable.
This requires error_reporting set to E_ALL, which is not the default,
but a _must_ on a development system.

Another option to avoid globals could be OOP.


Re: globals and super globals

On Fri, 25 Feb 2005 13:41:08 +0000, John wrote:
Quoted text here. Click to load it

You could use $_SESSION for that. Not sure if it requires a
session_start() though, never used it without.

Firefox Web Browser - Rediscover the web - /
Thunderbird E-mail and Newsgroups - /

Re: globals and super globals

As a C developer myself I don't like the use of globals, so i just pass
the variables into a function. A lot of my code is split up into
functions so I don't have much of a problem.

But #2 is pretty good too.


Re: globals and super globals

John wrote:

Quoted text here. Click to load it
Hi yerself,

Already there. Only it's called $GLOBALS


Re: globals and super globals


$GLOBALS is just a list of your global variables - it does not
make them 'superglobal'.


Quoted text here. Click to load it

Re: globals and super globals


Quoted text here. Click to load it

As others have mentioned, if you set your error level high enough
(E_ALL) than you'll get notices for any undefined variable accesses.
But that's still not the greatest solution.

Whenever I use globals I always use the $GLOBALS array and not the
global keyword.  

In PHP5, I don't use "globals" at all instead I use static class
variables which avoids all these scoping issues.

Quoted text here. Click to load it

Seriously, you want to use objects and classes.  You can avoid using
globals for nearly everything if your project is propertly organized
into classes.  I have a HUGE project and I generally only use globals
for temporary caching.

Quoted text here. Click to load it

I believe the $GLOBALS array is preferred over the global keyword.  In
fact, I haven't used the global keyword in a very a long time.


Re: globals and super globals

Quoted text here. Click to load it

You can't create your own superglobal, though what you can do is hijack one
of the existing ones:

$_ENV = $mystuff;

Not a civil way to program though.

Being an old timer, I consider superglobals sacrilegious. The global keyword
was one of PHP's key innovations. The language actually discourages you from
using global variable.

Site Timeline