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

_____________________
t...@sperling.com
http://sperling.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to