Ámbito de las variables en PHP

El ámbito de las variables es el alcance que tienen las variables. Podemos tener distintos casos.

  1. Si no tenemos funciones, toda variable es accedida desde todo el fichero (globales)
  2. Si tenemos funciones, cada función accede sólo a sus variables (no puede acceder a las de fuera o globales), desde fuera no se puede acceder a las variables de las funciones
  3. Para acceder a variables globales desde una función deberemos declararlas globales dentro de la función
  4. También podemos acceder a las variables globales usando $GLOBALS
  5. Los vectores $_GET, $_POST, $_REQUEST son globales

No es para nada aconsejable el uso de las variables globales, si nos hace falta acceder a un dato exterior deberemos usar un parámetro.

Ejemplo de trabajo con variables globales

Uso incorrecto

<?php
//funcion que restorna TRUE si a es mayor que B y FALSE en caso contrario
function mayor ()
	{
	if ($a>$b)
		return TRUE;
	else
		return FALSE;
	}
	
$a=24;
$b=23;
if (mayor()) 
	echo "24 mayor que 23";
else
	echo "23 mayor o igual que 24";
	
?>

Uso correcto usando global

<?php
//funcion que restorna TRUE si a es mayor que B y FALSE en caso contrario
function mayor ()
	{
	global $a;
	global $b;
	if ($a>$b)
		return TRUE;
	else
		return FALSE;
	}
	
$a=24;
$b=23;
if (mayor()) 
	echo "24 mayor que 23";
else
	echo "23 mayor o igual que 24";
	
?>

Uso correcto usando $GLOBALS

<?php
//funcion que restorna TRUE si a es mayor que B y FALSE en caso contrario
function mayor ()
	{
	if ($GLOBALS['a']>$GLOBALS['b'])
		return TRUE;
	else
		return FALSE;
	}
	
$a=24;
$b=23;
if (mayor()) 
	echo "24 mayor que 23";
else
	echo "23 mayor o igual que 24";
	
?>

Cuando cambiamos el valor de una global se cambia en todas sus apariciones

En el siguiente ejemplo podéis ver como al cambiar una global en la función llega cambiada al proceso principal

<?php
function uso_de_globales ()
	{
	global $a;
	$a=10;
	}

$a=5;
uso_de_globales();
echo $a;
?>

Simular el uso de globales con paso de parámetros

Como se os ha comentado al principio, el uso de globales debe ser algo excepcional y para nada debemos abusar de el. En la mayoría de los casos en los que se requieren globales se podría hacer con un uso correcto de parámetros y return, como se muestra en el siguiente ejemplo.

<?php
function funcion ($a)
	{
	$a=10;
	return $a;
	}

$a=5;
$a=funcion($a);
echo $a;
?>

Originally posted 2011-02-08 18:49:12.

One Response to “ Ámbito de las variables en PHP ”

  1. Alex dice:

    Excelente!

    Muy bien explicado, además de ir al grano.

Deja un comentario