Ideas y consejos

$_GLOBALS en PHP: qué es, cómo funciona y cuándo utilizar esta variable predefinida

5 min de lectura

$_GLOBALS en PHP: qué es, cómo funciona y cuándo utilizar esta variable predefinida

PHP dispone de diferentes variables predefinidas que proporcionan información y funcionalidades útiles durante la ejecución de un programa. Entre ellas se encuentra $_GLOBALS, una variable especial que permite acceder a las variables que pertenecen al ámbito global de un script.

Aunque puede resultar especialmente útil para comprender cómo funcionan los ámbitos de las variables en PHP, también es importante conocer sus particularidades antes de utilizarla en un proyecto.

¿Qué es $_GLOBALS en PHP?

$GLOBALS es una variable superglobal de PHP que contiene todas las variables definidas en el ámbito global del script.

A diferencia de una variable normal, las superglobales están disponibles desde cualquier ámbito del código sin necesidad de utilizar la palabra clave global.

Por ejemplo:

$nombre = "Antonio";

function mostrarNombre() {
    echo $GLOBALS["nombre"];
}

mostrarNombre();

En este caso, la función puede acceder a $nombre, que fue definida fuera de ella, mediante:

$GLOBALS["nombre"]

La documentación oficial explica el funcionamiento de $GLOBALS en PHP.

¿Para qué sirve $GLOBALS?

La principal utilidad de $GLOBALS es permitir que una función pueda acceder a variables que pertenecen al ámbito global.

Normalmente, una variable creada fuera de una función no está disponible directamente dentro de ella:

$numero = 10;

function calcular() {
    echo $numero;
}

Este código no permite utilizar $numero directamente dentro de la función porque pertenece a otro ámbito.

Una posibilidad es utilizar $GLOBALS:

$numero = 10;

function calcular() {
    echo $GLOBALS["numero"];
}

calcular();

El resultado será:

10

¿Qué significa que sea una variable superglobal?

PHP denomina superglobales a determinadas variables que están disponibles prácticamente desde cualquier lugar del script.

Entre ellas se encuentran:

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIE
  • $_SESSION
  • $_REQUEST
  • $_ENV

Estas variables tienen diferentes funciones. Por ejemplo, $_GET permite acceder a parámetros enviados mediante la URL, mientras que $_POST se utiliza habitualmente para recibir datos enviados mediante formularios.

Puedes consultar todas ellas en la documentación de variables predefinidas de PHP.

¿Cómo acceder a una variable mediante $GLOBALS?

Para acceder a una variable global mediante $GLOBALS, debemos utilizar el nombre de la variable como índice del array.

Por ejemplo:

$mensaje = "Hola mundo";

echo $GLOBALS["mensaje"];

El resultado será:

Hola mundo

También podemos utilizar $GLOBALS desde una función:

$mensaje = "Hola mundo";

function mostrarMensaje() {
    echo $GLOBALS["mensaje"];
}

mostrarMensaje();

De esta forma, la función puede acceder a la variable que se encuentra en el ámbito global.

¿Se pueden modificar variables con $GLOBALS?

Sí. $GLOBALS no solamente permite consultar variables globales, sino también modificarlas.

Por ejemplo:

$contador = 5;

function incrementar() {
    $GLOBALS["contador"]++;
}

incrementar();

echo $contador;

El resultado será:

6

La función ha modificado directamente la variable global.

Esta posibilidad explica por qué $GLOBALS debe utilizarse con cuidado, especialmente en aplicaciones grandes.

$GLOBALS y la palabra clave global

PHP también proporciona la palabra clave global, que permite declarar dentro de una función que queremos utilizar una variable perteneciente al ámbito global.

Por ejemplo:

$nombre = "Antonio";

function mostrarNombre() {
    global $nombre;
    echo $nombre;
}

mostrarNombre();

El mismo ejemplo puede escribirse utilizando $GLOBALS:

$nombre = "Antonio";

function mostrarNombre() {
    echo $GLOBALS["nombre"];
}

mostrarNombre();

Ambas alternativas permiten acceder a la variable global, aunque funcionan mediante mecanismos diferentes.

¿Cuál es la diferencia entre $GLOBALS y global?

La diferencia principal está en la forma de acceder a la variable.

Con global declaramos dentro de la función qué variable global queremos utilizar:

global $nombre;

Con $GLOBALS, accedemos a ella mediante un array:

$GLOBALS["nombre"]

Además, $GLOBALS permite trabajar directamente con el conjunto de variables del ámbito global.

Para comprender mejor los diferentes ámbitos de las variables, la documentación de PHP sobre el alcance de las variables resulta especialmente útil.

¿Por qué conviene utilizar $GLOBALS con precaución?

Aunque $GLOBALS puede solucionar determinadas necesidades, utilizar demasiadas variables globales puede hacer que un programa sea más difícil de mantener.

Cuando diferentes funciones modifican continuamente los mismos datos globales, puede resultar complicado saber qué parte del código ha cambiado una determinada variable.

Por este motivo, en aplicaciones grandes suele ser preferible utilizar otros mecanismos, como parámetros de funciones, valores de retorno, objetos o propiedades encapsuladas.

Por ejemplo, en lugar de depender de una variable global:

$total = 100;

function aumentarTotal() {
    $GLOBALS["total"] += 20;
}

podemos pasar el valor a una función:

function aumentarTotal($total) {
    return $total + 20;
}

$total = aumentarTotal(100);

Este segundo enfoque hace más explícita la información que recibe y devuelve la función.

¿Es lo mismo $_GLOBALS que $GLOBALS?

Aquí existe una diferencia importante de escritura.

La variable superglobal se denomina:

$GLOBALS

No:

$_GLOBALS

Las variables superglobales de PHP como $_GET, $_POST o $_SERVER comienzan con guion bajo y dólar, pero $GLOBALS** no lleva guion bajo**.

Por tanto, si estamos consultando la documentación titulada reserved.variables.globals.php, el concepto correcto es $GLOBALS.

Ejemplo práctico

Imaginemos un pequeño programa que almacena un número global:

$precio = 50;

function aplicarDescuento() {
    $GLOBALS["precio"] = $GLOBALS["precio"] - 10;
}

aplicarDescuento();

echo $precio;

El resultado será:

40

La función ha accedido a $precio mediante $GLOBALS y ha modificado su contenido.

Aunque este ejemplo es sencillo, permite entender perfectamente cómo funciona la variable superglobal.

¿Cuándo puede ser útil $GLOBALS?

$GLOBALS puede resultar útil cuando necesitamos acceder explícitamente desde una función a datos definidos en el ámbito global.

También puede utilizarse para comprender determinados programas antiguos o código PHP que depende de variables globales.

Sin embargo, no debería convertirse automáticamente en la solución para compartir datos entre todas las funciones de una aplicación.

En código nuevo, suele ser recomendable diseñar las funciones de manera que reciban los datos que necesitan y devuelvan los resultados correspondientes.

En resumen

$GLOBALS es una variable superglobal de PHP que contiene las variables disponibles en el ámbito global del script.

Permite acceder a ellas desde funciones y otros ámbitos sin necesidad de utilizar global. También permite modificar esas variables, aunque hacerlo de forma indiscriminada puede dificultar el mantenimiento del código.

Un ejemplo básico sería:

$nombre = "Antonio";

function mostrar() {
    echo $GLOBALS["nombre"];
}

mostrar();

El concepto es especialmente importante para comprender cómo funcionan los ámbitos de las variables en PHP. Aun así, en proyectos grandes suele ser conveniente utilizar alternativas como parámetros, valores de retorno y programación orientada a objetos para mantener el código más organizado y predecible.

Productos recomendados

Seleccionados de nuestra tienda para este tema

Leave a comment

Carrito de compra

×

No hay productos en el carrito.