En PHP, cualquier variable a la que se pueda acceder desde cualquier lugar de un script PHP se llama como una variable global. Si la variable se declara fuera de todas las funciones o clases del script, se convierte en una variable global.
Si bien se puede acceder a las variables globales directamente fuera de una función, no están disponibles automáticamente dentro de una función.
Ejemplo
En el siguiente script, $name es global para la función sayhello().
<?php
$name = "Amar";
function sayhello() {
echo "Hello " . $name;
}
sayhello();
?>
Sin embargo, no se puede acceder a la variable dentro de la función. Por lo tanto, recibirá un mensaje de error «Variable indefinida $name».
Hello
PHP Warning: Undefined variable $name in /home/cg/root/93427/main.php on line 5
Ejemplo
Para obtener acceso dentro de una función, debe usar la palabra clave «global» antes de la variable.
<?php
$name = "Amar";
function sayhello() {
GLOBAL $name;
echo "Hello " . $name;
}
sayhello();
?>
Producirá el siguiente resultado:
Hello Amar
Si una función accede a una variable global y la modifica, el valor modificado está disponible en todas partes después de que se complete la llamada a la función.
Cambiemos el valor de $name dentro de la función sayhello() y comprobemos su valor después de llamar a la función.
Ejemplo
Echa un vistazo al siguiente ejemplo:
<?php
$name = "Amar";
function sayhello() {
GLOBAL $name;
echo "Global variable name: $name" .PHP_EOL;
$name = "Amarjyot";
echo "Global variable name changed to: $name" .PHP_EOL;
}
sayhello();
echo "Global variable name after function call: $name" .PHP_EOL;
?>
Producirá el siguiente resultado:
Global variable name: Amar
Global variable name changed to: Amarjyot
Global variable name after function call: Amarjyot
La matriz $GLOBALS
PHP mantiene una matriz asociativa llamada $GLOBALS que contiene todas las variables y sus valores declarados en un ámbito global. La matriz $GLOBALS también almacena muchas variables predefinidas denominadas superglobales, junto con las variables globales definidas por el usuario.
También se puede acceder a cualquiera de las variables globales dentro de cualquier función con la ayuda de una sintaxis regular de acceso a un elemento de flecha. Por ejemplo, el valor de la variable global $name viene dado por $GLOBALS[«name»].
Ejemplo
En el siguiente ejemplo, se accede a dos variables globales $x y $y dentro de la función addition().
<?php
$x = 10;
$y = 20;
function addition() {
$z = $GLOBALS['x']+$GLOBALS['y'];
echo "Addition: $z" .PHP_EOL;
}
addition();
?>
Producirá el siguiente resultado:
Addition: 30
Ejemplo
También puede agregar cualquier variable local en el ámbito global agregándola en la matriz $GLOBALS. Agreguemos $z en el ámbito global.
<?php
$x = 10;
$y = 20;
function addition() {
$z = $GLOBALS['x']+$GLOBALS['y'];
$GLOBALS['z'] = $z;
}
addition();
echo "Now z is the global variable. Addition: $z" .PHP_EOL;
?>
Producirá el siguiente resultado:
Now z is the global variable. Addition: 30
Incluir un script PHP en otro
Puede incluir un script PHP en otro. Las variables declaradas en el script incluido se agregan en el alcance global del script PHP en el que se incluye.
Aquí está el archivo «a.php»:
<?php
include 'b.php';
function addition() {
$z = $GLOBALS['x']+$GLOBALS['y'];
echo "Addition: $z" .PHP_EOL;
}
addition();
?>
Incluye «b.php» que tiene las variables $x y $y, por lo que se convierten en las variables globales para la función addition() en el script «a.php».
<?php
$x = 10;
$y = 20;
?>
Las variables globales se utilizan generalmente cuando se implementan patrones singleton y se accede a registros en sistemas embebidos y también cuando una variable está siendo utilizada por muchas funciones.