W3docs

global

La palabra clave "global" en PHP accede a variables declaradas fuera de la función actual. Aquí exploramos su sintaxis y uso.

La palabra clave "global" de PHP: Una guía completa

En PHP, las variables tienen un ámbito limitado — una variable creada dentro de una función es local a esa función y no puede ver las variables definidas en el script principal, y viceversa. La palabra clave global cierra esa brecha: le indica a una función que use la misma variable que existe en el ámbito global (a nivel del script) en lugar de crear una nueva variable local.

Esta página cubre la sintaxis de global, cómo funciona el ámbito de las variables, la relación entre global y el superglobal $GLOBALS, ejemplos prácticos, errores comunes y cuándo conviene usar una alternativa más limpia.

Comprendiendo el ámbito de las variables

Por defecto, una variable definida fuera de una función no es visible dentro de ella:

<?php
$message = "Hello";

function show() {
  echo $message; // Notice: Undefined variable $message
}

show();

La función show() no tiene acceso a $message porque $message vive en el ámbito global y show() tiene su propio ámbito local separado. La palabra clave global es una forma de darle a la función acceso a esa variable exterior.

Sintaxis

La palabra clave "global" se usa para acceder a una variable global en PHP. Aquí está la sintaxis básica para usar la palabra clave "global":

La sintaxis PHP de global

<?php
$variableName = "initial value";

function functionName() {
  global $variableName;
  // code to be executed
}

En este ejemplo, la palabra clave global se usa para acceder a una variable llamada $variableName que se declara fuera de la función actual. Una vez declarada como global, cualquier cambio que la función realice en $variableName se refleja en el ámbito exterior, y cualquier cambio realizado fuera es visible dentro de la función.

También puede importar varias variables globales a la vez separándolas con comas:

<?php
$x = 5;
$y = 10;

function addThem() {
  global $x, $y;
  echo $x + $y; // Output: 15
}

addThem();

Ejemplos

Veamos algunos ejemplos prácticos de cómo se puede usar la palabra clave "global":

Ejemplos de PHP global

<?php

// Example 1
$counter = 0;

function incrementCounter()
{
  global $counter;
  $counter++;
}

incrementCounter();
echo $counter . PHP_EOL; // Output: 1

// Example 2
$color = "red";

function changeColor()
{
  global $color;
  $color = "blue";
}

changeColor();
echo $color; // Output: blue

En estos ejemplos, usamos la palabra clave global para acceder a variables declaradas fuera de la función actual y modificar sus valores.

global vs. el array $GLOBALS

PHP también expone cada variable global a través del superglobal $GLOBALS — un array asociativo con clave de nombre de variable. A diferencia de global, $GLOBALS está disponible en cada ámbito sin declaración, por lo que las siguientes dos funciones son equivalentes:

<?php
$total = 100;

function withGlobal() {
  global $total;
  $total += 1;
}

function withGlobals() {
  $GLOBALS['total'] += 1;
}

withGlobal();
withGlobals();
echo $total; // Output: 102

$GLOBALS es útil cuando solo necesita una o dos variables externas, ya que evita una línea de declaración global separada. Ambos enfoques leen y escriben en las mismas variables subyacentes.

Errores comunes

  • global solo funciona para variables que ya existen o que pretende crear en el ámbito global. Escribir mal el nombre de la variable crea silenciosamente una variable global diferente en lugar de generar un error.
  • Debe aparecer antes de usar la variable. Declare global $name; al comienzo de la función, antes de cualquier referencia a $name.
  • global no hace nada para las constantes o las variables static — es exclusivamente para variables ordinarias de ámbito global.
  • Dependencias ocultas. Una función que depende de global puede comportarse de manera diferente según el estado del script, lo que dificulta su prueba de forma aislada.

Beneficios

Usar la palabra clave "global" tiene varios beneficios, entre ellos:

  • Acceso a variables globales: La palabra clave "global" le permite acceder y modificar variables declaradas fuera de la función o clase actual.
  • Nota sobre mantenibilidad: Si bien global proporciona acceso directo a las variables del ámbito exterior, su uso excesivo puede hacer que el código sea más difícil de depurar y probar. El desarrollo moderno de PHP a menudo prefiere pasar variables como parámetros de función, usar inyección de dependencias o acceder al array superglobal $GLOBALS cuando sea necesario.

Conclusión

En conclusión, la palabra clave "global" permite a los desarrolladores de PHP acceder a variables declaradas fuera de la función o clase actual. Si bien puede ser útil para scripts rápidos o código heredado, las mejores prácticas modernas de PHP recomiendan limitar su uso para evitar el acoplamiento estrecho y los problemas de mantenibilidad. Para una mejor arquitectura, considere pasar variables como parámetros, usar inyección de dependencias o aprovechar el array superglobal $GLOBALS.

Para profundizar más, lea sobre el ámbito de variables en PHP, la palabra clave static para variables que persisten entre llamadas, y las variables PHP en general.

Práctica

Práctica
¿Qué es cierto sobre el ámbito de las variables en PHP, según el contenido de la URL especificada?
¿Qué es cierto sobre el ámbito de las variables en PHP, según el contenido de la URL especificada?
Was this page helpful?