By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,870 Members | 1,189 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,870 IT Pros & Developers. It's quick & easy.

globals and super globals

P: n/a

Hi,

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).
Questions
=========

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...

John.

Jul 17 '05 #1
Share this Question
Share on Google+
7 Replies


P: n/a
.oO(John)
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).


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.

Micha
Jul 17 '05 #2

P: n/a
On Fri, 25 Feb 2005 13:41:08 +0000, John wrote:
If I put all my globals into an array/hashtable, eg.


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 - http://getffox.com/
Thunderbird E-mail and Newsgroups - http://gettbird.com/
Jul 17 '05 #3

P: n/a
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.

Rushi

Jul 17 '05 #4

P: n/a
John wrote:

Hi,
Hi yerself,

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


Already there. Only it's called $GLOBALS

C.
Jul 17 '05 #5

P: n/a
Colin,

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

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

Already there. Only it's called $GLOBALS

C.


Jul 17 '05 #6

P: n/a
On Fri, 25 Feb 2005 13:41:08 +0000, John <jo********@mini-net.co.uk>
wrote:
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).
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.
I prefer the idea of (2), but I wonder if its just going too
far ?
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.
Would anyone suggest what the prefered way of having and
using globals is ?


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.

Later,

Jul 17 '05 #7

P: n/a
"John" <jo********@mini-net.co.uk> wrote in message
news:11*************@corp.supernews.com...
Questions
=========

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 ?


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.
Jul 17 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.