Lección 5 de 75 12 min de lectura

Variables y Constantes

Las variables son contenedores que almacenan datos durante la ejecución de tu programa. Las constantes son similares, pero su valor no puede cambiar. En esta lección aprenderás a crear y usar ambas correctamente.

Variables en PHP

En PHP, las variables se identifican con el símbolo $ seguido del nombre. No necesitas declarar el tipo de dato; PHP lo infiere automáticamente.

PHP
<?php

// Declarar variables
$nombre = 'Carlos';
$edad = 28;
$precio = 19.99;
$activo = true;

// Usar variables
echo "Hola, $nombre\n";
echo "Tienes $edad años\n";

// Reasignar valores
$edad = 29;
echo "Ahora tienes $edad años\n";

Reglas para nombrar variables

  • Deben empezar con $
  • El nombre debe comenzar con letra o guion bajo _
  • Pueden contener letras, números y guiones bajos
  • Son case-sensitive: $nombre y $Nombre son diferentes
  • No pueden contener espacios ni caracteres especiales
PHP
<?php

// Nombres válidos
$nombre = 'Ana';
$_privado = 'valor';
$usuario1 = 'Pedro';
$totalDeVentas = 100;

// Nombres inválidos (causarán error)
// $1usuario = "error";    // No puede empezar con número
// $mi-variable = "error"; // No puede tener guiones
// $mi variable = "error"; // No puede tener espacios
Convención de nombres

En PHP se usa camelCase para variables: $nombreUsuario, $totalFactura. Algunas librerías usan snake_case: $nombre_usuario. Lo importante es ser consistente en tu proyecto.

Constantes

Las constantes almacenan valores que no cambian durante la ejecución. Son ideales para configuración, valores fijos y "números mágicos".

Definir constantes con const

PHP
<?php

// Definir constantes (sin $, por convención en MAYÚSCULAS)
const PI = 3.14159;
const APP_NAME = 'Mi Aplicación';
const MAX_USUARIOS = 100;
const DEBUG = true;

// Usar constantes
echo APP_NAME . "\n";
echo "El valor de PI es: " . PI . "\n";

// Esto causaría error:
// PI = 3.14; // No se puede reasignar una constante

Definir constantes con define()

La función define() es la forma tradicional de crear constantes. Permite definir constantes de forma condicional.

PHP
<?php

// Definir con define()
define('VERSION', '1.0.0');
define('BASE_URL', 'https://ejemplo.com');

// Definición condicional
if (!defined('DEBUG')) {
    define('DEBUG', false);
}

echo "Versión: " . VERSION . "\n";

const vs define()

const define()
Se evalúa en tiempo de compilación Se evalúa en tiempo de ejecución
No puede usarse en condicionales Puede usarse en condicionales
Puede usarse en clases No puede usarse dentro de clases
Sintaxis más limpia Más flexible
Recomendación

Usa const por defecto. Es más rápido y la sintaxis es más clara. Usa define() solo cuando necesites definir constantes condicionalmente.

Constantes predefinidas

PHP incluye muchas constantes ya definidas que son muy útiles:

PHP
<?php

// Constantes mágicas (cambian según el contexto)
echo __FILE__;    // Ruta completa del archivo actual
echo __DIR__;     // Directorio del archivo actual
echo __LINE__;    // Número de línea actual
echo __FUNCTION__; // Nombre de la función actual
echo __CLASS__;   // Nombre de la clase actual
echo __METHOD__;  // Nombre del método actual

// Constantes de PHP
echo PHP_VERSION; // Versión de PHP
echo PHP_EOL;     // Salto de línea del sistema
echo PHP_INT_MAX; // Entero máximo soportado

Scope (alcance) de variables

El scope determina dónde puede usarse una variable. PHP tiene tres tipos de scope:

Scope global

Variables definidas fuera de funciones. Para usarlas dentro de una función, necesitas la palabra clave global.

PHP
<?php

$mensaje = 'Hola';

function saludar() {
    global $mensaje; // Acceder a variable global
    echo $mensaje;
}

saludar(); // Imprime: Hola

Scope local

Variables definidas dentro de una función. Solo existen durante la ejecución de esa función.

PHP
<?php

function calcular() {
    $resultado = 10 + 5; // Variable local
    return $resultado;
}

echo calcular(); // 15
// echo $resultado; // Error: variable no definida fuera de la función

Variables estáticas

Variables locales que mantienen su valor entre llamadas a la función.

PHP
<?php

function contador() {
    static $count = 0; // Se inicializa solo una vez
    $count++;
    return $count;
}

echo contador(); // 1
echo contador(); // 2
echo contador(); // 3
Evita global

Usar global hace el código difícil de mantener y testear. Es mejor pasar variables como parámetros o usar inyección de dependencias. Lo veremos en lecciones posteriores.

Variables variables

PHP permite crear nombres de variables dinámicamente (aunque rara vez es necesario):

PHP
<?php

$nombreVariable = 'saludo';
$$nombreVariable = 'Hola Mundo'; // Crea $saludo

echo $saludo; // Hola Mundo
echo $$nombreVariable; // Hola Mundo (equivalente)

Ejercicios

Ejercicio 1: Datos personales

Crea variables para almacenar tu nombre, edad y ciudad. Luego imprime una frase que diga "Me llamo [nombre], tengo [edad] años y vivo en [ciudad]".

Ver solucion
<?php

declare(strict_types=1);

$nombre = 'Carlos';
$edad = 28;
$ciudad = 'Madrid';

echo "Me llamo $nombre, tengo $edad años y vivo en $ciudad\n";

Ejercicio 2: Constantes de configuracion

Define tres constantes para una aplicacion: APP_NAME con el valor "Mi Blog", APP_VERSION con "1.0.0" y MAX_POSTS con el valor 10. Luego imprime un mensaje que muestre las tres constantes.

Ver solucion
<?php

declare(strict_types=1);

const APP_NAME = 'Mi Blog';
const APP_VERSION = '1.0.0';
const MAX_POSTS = 10;

echo "Aplicacion: " . APP_NAME . "\n";
echo "Version: " . APP_VERSION . "\n";
echo "Maximo de posts: " . MAX_POSTS . "\n";

Ejercicio 3: Reasignacion de variables

Crea una variable $contador con valor 0. Incrementa su valor 3 veces usando el operador += y muestra el valor despues de cada incremento.

Ver solucion
<?php

declare(strict_types=1);

$contador = 0;
echo "Valor inicial: $contador\n";

$contador += 1;
echo "Despues del primer incremento: $contador\n";

$contador += 1;
echo "Despues del segundo incremento: $contador\n";

$contador += 1;
echo "Despues del tercer incremento: $contador\n";

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium