0Pricing
PHP Academy · Lección

Ámbito de las variables: local y global

Comprenda cómo PHP aísla el ámbito de las funciones y cómo utilizar la palabra clave global.

Ámbito de las variables: local y global es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

Ámbito de las variables en PHP

En PHP, cada variable tiene un ámbito: la región del código en la que se puede acceder a ella.

  • Las variables creadas fuera de las funciones están en el ámbito global
  • Las variables creadas dentro de las funciones están en el ámbito local
  • PHP NO tiene ámbito de bloque (a diferencia de C o JavaScript)

Ámbito local

Las variables dentro de una función son locales y dejan de existir cuando la función devuelve el control:

<?php
function compute(): void {
    $result = 42;  // local variable
    echo $result;  // 42
}

compute();
echo $result ?? 'undefined';  // undefined — $result is gone

Las variables globales NO son visibles automáticamente

A diferencia de muchos lenguajes, las funciones de PHP no pueden ver las variables globales de forma predeterminada; debe importarlas explícitamente:

<?php
$message = 'Hello';

function printMessage(): void {
    echo $message ?? 'not visible';  // 'not visible'
    // $message from global scope is not accessible here
}

La palabra clave global

Use global $varName dentro de una función para acceder a una variable global:

<?php
$counter = 0;

function increment(): void {
    global $counter;
    $counter++;
}

increment();
increment();
echo $counter;  // 2

La superglobal $GLOBALS

$GLOBALS es un array que contiene todas las variables globales y al que se puede acceder desde cualquier lugar sin la palabra clave global:

<?php
$total = 100;

function addTax(): void {
    $GLOBALS['total'] *= 1.18;  // 18% tax
}

addTax();
echo $total;  // 118

Por qué evitar global

El uso excesivo de global crea dependencias ocultas, por lo que las funciones son difíciles de probar y depurar. Es preferible pasar los valores como argumentos:

<?php
// Bad
$db = new PDO(/* ... */);
function getUsers(): array {
    global $db;
    return $db->query('SELECT * FROM users')->fetchAll();
}

// Good
function getUsers(PDO $db): array {
    return $db->query('SELECT * FROM users')->fetchAll();
}

Variables estáticas

Una variable static conserva su valor entre llamadas a una función, pero sigue siendo local a la función:

<?php
function callCount(): int {
    static $count = 0;
    return ++$count;
}

echo callCount();  // 1
echo callCount();  // 2
echo callCount();  // 3

Closures y captura de variables

Las closures (funciones anónimas) pueden capturar variables del ámbito externo mediante use:

<?php
$prefix = 'Mr';

$greet = function(string $name) use ($prefix): string {
    return "$prefix. $name";
};

echo $greet('Smith');  // Mr. Smith

Captura por referencia

Capture por referencia con use (&$var) para que la closure pueda modificar la variable externa:

<?php
$total = 0;

$add = function(int $n) use (&$total): void {
    $total += $n;
};

$add(10);
$add(5);
echo $total;  // 15

Funciones flecha

Las funciones flecha de PHP 7.4 (fn =>) capturan automáticamente el ámbito externo por valor; no necesitan use:

<?php
$multiplier = 3;
$nums = [1, 2, 3, 4];

$result = array_map(fn($n) => $n * $multiplier, $nums);

print_r($result);  // [3, 6, 9, 12]

Funciones anidadas

PHP permite definir una función dentro de otra, pero la función interna pasa a estar disponible globalmente después de llamar a la externa:

<?php
function outer(): void {
    function inner(): void {
        echo 'inner called';
    }
}

// inner(); // Fatal: undefined before outer() is called
outer();
inner(); // works now

Comprobación rápida

¿Qué hace una variable static dentro de una función de PHP?

Repaso: ámbito de las variables

Reglas principales del ámbito en PHP:

  • Las funciones tienen su propio ámbito local
  • Las variables globales deben importarse con global
  • Use $GLOBALS['name'] como alternativa
  • Las variables static persisten entre llamadas dentro de una función
  • Las closures capturan variables externas con use
  • Las funciones flecha capturan automáticamente por valor

Preguntas frecuentes

¿La lección «Ámbito de las variables: local y global» es gratis?

Sí — el texto completo de «Ámbito de las variables: local y global» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Ámbito de las variables: local y global»?

Comprenda cómo PHP aísla el ámbito de las funciones y cómo utilizar la palabra clave global. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Ámbito de las variables: local y global»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Definición y llamada de funciones
  2. Parámetros predeterminados y variádicos
  3. Ámbito de las variables: local y global
  4. Funciones anónimas y closures
← Volver a PHP Academy