INTERPOLACIÓN DE VARIABLES EN PHP

La interpolación de variables es una de las características más cómodas y utilizadas de PHP. Permite insertar el valor de una variable directamente dentro de una cadena de texto, haciendo el código más legible y limpio. Aunque es un concepto básico, hay detalles importantes, especialmente con los cambios que vienen en PHP 9.

¿Qué es la interpolación de variables?

La interpolación es la capacidad que tiene PHP de interpretar y reemplazar variables dentro de una cadena encerrada entre comillas dobles (").

$nombre = "Carlos";
$edad = 34;

echo "Hola, soy $nombre y tengo $edad años.";

// Salida: Hola, soy Carlos y tengo 34 años.

//Esto es mejor que la concatenación tradicional:
// Menos legible
echo "Hola, soy " . $nombre . " y tengo " . $edad . " años.";

Formas de interpolación en PHP

  1. Interpolación simple:

    echo "Usuario: $usuario->nombre";     // Funciona con objetos
    echo "Total: $precio €";    // Funciona con texto pegado
    
    Limitación: Solo funciona con variables simples o propiedades de objetos.
  2. Interpolación con llaves (Recomendada) siendo la forma más profesional y segura::

    echo "Bienvenido {$usuario->getNombre()}";
    echo "El artículo {$articulo['titulo']} tiene {$articulo['vistas']} vistas.";
    echo "Precio final: {$precio + $impuestos}€";
    
    Ventajas de usar "{}":
    • Mayor claridad
    • Permite expresiones complejas
    • Evitar ambigüedades
    • Compatible con PHP 9
  3. Interpolación con arrays:

    $datos = [
        'nombre' => 'Laura',
        'ciudad' => 'Madrid'
    ];
    
    echo "Nombre: {$datos['nombre']}, Ciudad: {$datos['ciudad']}";
    

Sintaxis obsoletas (Eliminadas en PHP 9)

PHP 9 eliminará por completo estas dos formas:

echo "Hola ${nombre}";     // Sintaxis antigua
echo "Valor: ${$variableDinamica}";  // Variable variable
echo "Resultado: ${calcularTotal()}";     // Expresiones complejas

Mejores Prácticas

  • Usa siempre llaves:

    echo "El usuario {$usuario->nombre} tiene {$edad} años.";
    
  • Evitar interpolación compleja en plantillas grandes. En esos casos es mejor usar:
    • Blade (Laravel)
    • Twig
    • "sprintf()" para crear una cadena de texto formateada de forma controlada:

      $nombre = "Ana";
      $edad = 25;
      $precio = 89.995;
      $texto = sprintf("Hola %s, tienes %d años. El producto cuesta %.2f€", $nombre, $edad, $precio);
      echo $texto;
      // Salida: Hola Ana, tienes 25 años. El producto cuesta 90.00€
      
    • Plantillas con "str_replace()"
  • No abusar de la interpolación en bucles de alto rendimiento. En esos casos la concatenación o "implode()" puede ser más rápida.
  • La interpolación no escapa automáticamente HTML. Usar "htmlspecialchars()" cuando se muestren datos de usuarios.

Ejemplo práctico completo

class Usuario {
    public string $nombre = "María";
    public int $edad = 29;
    
    public function getSaludo(): string {
   return "Hola, mi nombre es {$this->nombre} y tengo {$this->edad} años.";
    }
}

$usuario = new Usuario();
echo $usuario->getSaludo();