Apuntes php

PHP: Porque a veces necesitas un poco de caos en tu vida.

Variables y Alcance

El alcance de las variables (o scope) determina dónde se pueden utilizar en tu código.

¿Qué es el alcance de una variable?

El alcance de una variable define desde qué partes de tu código puedes acceder a ella. Imagina que tu programa es una casa con muchas habitaciones: algunas variables solo existen en una habitación específica (alcance local), mientras que otras pueden pasearse por toda la casa (alcance global).

  • Alcance global: Una variable creada fuera de funciones o clases está disponible en todo el script, excepto dentro de funciones.
  • Alcance local: Una variable creada dentro de una función solo existe dentro de esa función y no puede usarse fuera.

Ejemplo: Variables globales y locales

Veamos un ejemplo para entender por qué las variables dentro y fuera de una función no se “ven” entre sí:

<?php
$pais = "España"; // Variable global

function mostrarPais() {
    echo $pais; // ¡Error! $pais no está definida dentro de la función
}

mostrarPais(); // Esto genera un NOTICE (undefined variable)
echo $pais; // Imprime: España
?>

¿Qué pasó? La variable $pais es global, pero dentro de la función mostrarPais(), PHP no puede acceder a ella automáticamente. Si ejecutas este código, verás un mensaje de error (un NOTICE) porque $pais no existe dentro de la función. Además, fuera de la función, $pais se imprime correctamente porque está en el alcance global.

Ahora, observa qué pasa si definimos una variable con el mismo nombre dentro de la función:

<?php
$pais = "España"; // Variable global

function mostrarPais() {
    $pais = "Alemania"; // Variable local, distinta de la global
    echo "Dentro de la función: $pais\n";
}

mostrarPais(); // Imprime: Dentro de la función: Alemania
echo "Fuera de la función: $pais\n"; // Imprime: Fuera de la función: España
?>

Explicación: La variable $pais dentro de la función es local y no afecta a la variable $pais global. Son como dos personas con el mismo nombre en diferentes habitaciones.

La declaración global

Si queremos que una función acceda a una variable global, podemos usar la palabra clave global. Esto le dice a PHP: “usa la variable que está fuera de la función, no crees una nueva”.

<?php
$pais = "España"; // Variable global

function mostrarPais() {
    global $pais; // Accedemos a la variable global
    echo "Dentro de la función: $pais\n";
}

mostrarPais(); // Imprime: Dentro de la función: España
echo "Fuera de la función: $pais\n"; // Imprime: Fuera de la función: España
?>

Nota importante: Aunque global funciona, no es la mejor práctica en PHP moderno. Usar global puede hacer que tu código sea más difícil de entender y mantener. En su lugar, considera pasar variables como parámetros a la función:

<?php
$pais = "España";

function mostrarPais($pais) {
    echo "Dentro de la función: $pais\n";
}

mostrarPais($pais); // Imprime: Dentro de la función: España
echo "Fuera de la función: $pais\n"; // Imprime: Fuera de la función: España
?>

Este enfoque es más claro y evita sorpresas.

Variables estáticas

Normalmente, las variables dentro de una función se crean cuando la función empieza y se destruyen cuando termina. Pero, ¿qué pasa si queremos que una variable recuerde su valor entre varias llamadas a la función? Aquí entran las variables estáticas.

Una variable estática se declara con la palabra clave static y conserva su valor incluso después de que la función termina. Veamos un ejemplo práctico:

<?php
function contador() {
    static $a = 0; // Variable estática, inicializada solo la primera vez
    echo "Contador: $a\n";
    $a++; // Incrementamos el valor
}

contador(); // Imprime: Contador: 0
contador(); // Imprime: Contador: 1
contador(); // Imprime: Contador: 2
?>

Explicación: La variable $a se inicializa en 0 la primera vez que se llama a contador(). Luego, cada vez que llamamos a la función, $a conserva su valor anterior y se incrementa. Esto es útil para contadores, acumuladores o cualquier caso donde quieras “recordar” un valor.


Nota: Las variables estáticas solo conservan su valor durante la ejecución de la página. Si recargas la página, el contador vuelve a empezar desde 0.

Siguiente

Operadores aritméticos, lógicos, de comparación, y más,

TOP