>> On Oct 12, 2011, at 4:24 PM, Ken Robinson wrote:
>> Yes, but scope does not necessarily protect a value. Within a function
>> globals are out of scope, but their values can still be accessed through
>> $GLOBALS.
Tangental to the main point (and probably obvious to many) but I used to
believe (until recently) that variables within a $GLOBAL had to be defined
before being used, such as:
$GLOBAL['myVar'] = 'test';
echo($GLOBAL['myVar']);
But that is not true.
You can do this:
$myVar = 'test';
echo($GLOBAL['myVar']);
And reach the same result.
What is true (which I found surprising) was that any variable defined within
the main script are automatically included in the $GLOBAL array.
So, if in your main script you have the statement:
$myVar = 'test';
Then the $GLOBAL['myVar'] has also been created and will hold the value of
'test' without any additional coding.
While many of you will say "But of course, that's the way it works." I actually
said "What?!?" You see, I seldom use globals in my scripts and this runs
counter to my 'keep the globals to an absolute minimum' practice. So while I
was thinking my scripts didn't have globals, it was a surprise to me to find
out that in the background they were present anyway.
So, if you want a main script variable (i.e., $myVar) to be accessed by a
function, you can do it by stating:
myFunction
{
global $myVar;
// and then using $myVar
}
or
myFunction
{
$myVar = $GLOBAL['myVar']
// and then using $myVar
}
or via the standard ways by sending the value (or reference) to the function.
I hope my ignorance helps someone.
Cheers,
tedd
_____________________
[email protected]
http://sperling.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php