PHP
Variable Scope
The scope of a variable is the
portion of the script in which the variable can be referenced.
PHP has four different variable
scopes:
- local
- global
- static
- parameter
Local
Scope
A variable declared within a
PHP function is local and can only be accessed within that function. (the
variable has local scope):
<?php
$a = 5; // global scope
function myTest()
{
echo $a; // local scope
}
myTest();
?>
$a = 5; // global scope
function myTest()
{
echo $a; // local scope
}
myTest();
?>
The script above will not produce
any output because the echo statement refers to the local scope variable $a,
which has not been assigned a value within this scope.
You can have local variables with
the same name in different functions, because local variables are only
recognized by the function in which they are declared.
Local variables are deleted as soon
as the function is completed.
Global
Scope
Global scope refers to any variable
that is defined outside of any function.
Global variables can be accessed
from any part of the script that is not inside a function.
To access a global variable from
within a function, use the global keyword:
<?php
$a = 5;
$b = 10;
function myTest()
{
global $a, $b;
$b = $a + $b;
}
myTest();
echo $b;
?>
$a = 5;
$b = 10;
function myTest()
{
global $a, $b;
$b = $a + $b;
}
myTest();
echo $b;
?>
The script above will output 15.
PHP also stores all global variables
in an array called $GLOBALS[index]. Its index is the name of the
variable. This array is also accessible from within functions and can be used
to update global variables directly.
The example above can be rewritten
as this:
<?php
$a = 5;
$b = 10;
function myTest()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
myTest();
echo $b;
?>
$a = 5;
$b = 10;
function myTest()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
myTest();
echo $b;
?>
Static
Scope
When a function is completed, all of
its variables are normally deleted. However, sometimes you want a local
variable to not be deleted.
To do this, use the static
keyword when you first declare the variable:
static $rememberMe;
Then, each time the function is
called, that variable will still have the information it contained from the
last time the function was called.
Note: The variable is still local to the function.