Tema 9

Funciones y Tipado Estricto en PHP

Aprende a encapsular lógica reutilizable con funciones en PHP, aplicando tipado estricto de parámetros, tipos de retorno y argumentos con nombre.

¿Qué es una Función en PHP?

Una función es un bloque de código independiente y reutilizable que realiza una tarea específica. Recibe entradas (parámetros o argumentos), las procesa y opcionalmente retorna un resultado.

Sintaxis Clásica:

function saludar(string $nombre): string {
    return "Hola, " . $nombre;
}

Novedades Modernas en Funciones (PHP 8+)

1. Tipado Estricto de Parámetros y Retorno

Al declarar los tipos de datos en la firma de la función, PHP garantiza que la entrada y salida sean exactamente lo esperado, previniendo errores silenciosos:

function calcularTotal(float $precio, int $cantidad = 1, float $impuesto = 0.19): float {
    return ($precio * $cantidad) * (1 + $impuesto);
}

2. Argumentos con Nombre (Named Arguments)

En PHP 8+ puedes invocar funciones pasando el nombre del parámetro, sin preocuparte por el orden posicional y pudiendo saltarte los parámetros opcionales intermedios:

// Pasamos 'precio' e 'impuesto', dejando 'cantidad' con su valor por defecto (1)
$total = calcularTotal(precio: 100.0, impuesto: 0.16);

3. Funciones Flecha (Arrow Functions)

Para operaciones cortas de una sola línea, PHP ofrece la sintaxis concisa fn() => expresión:

$duplicar = fn(int $n): int => $n * 2;
echo $duplicar(5); // Imprime 10

⚡ Ejemplo de Funciones Modernas en PHP 8.3

Calculadora de facturación con tipado estricto y argumentos con nombre:

index.html
Solo lectura
<!DOCTYPE html>
<html>
<body>

<h2>Funciones Modernas en PHP 8.3</h2>

<?php
// 1. Declaración de una función con tipos de entrada y retorno
function formatearPrecio(float $monto, string $moneda = "USD"): string {
    return $moneda . " " . number_format($monto, 2, '.', ',');
}

// 2. Función de cálculo de descuento con valores por defecto
function calcularDescuento(float $precio, float $porcentaje = 10.0): float {
    $ahorro = $precio * ($porcentaje / 100);
    return $precio - $ahorro;
}

// 3. Invocación estándar
$precioOriginal = 150.00;
$precioFinal = calcularDescuento($precioOriginal, 20.0);

echo "<p>Precio Original: <strong>" . formatearPrecio($precioOriginal) . "</strong></p>";
echo "<p>Precio con 20% desc: <strong style='color:#059669;'>" . formatearPrecio($precioFinal) . "</strong></p>";

echo "<hr>";
echo "<h4>Uso de Argumentos con Nombre (PHP 8+):</h4>";

// Invocamos especificando nombres (el orden no importa)
echo "<p>Cálculo con COP: <strong>" . formatearPrecio(moneda: "COP", monto: 450000.00) . "</strong></p>";

// 4. Arrow Function para transformar una lista de notas
echo "<hr>";
echo "<h4>Arrow Function con array_map():</h4>";

$notas = [75, 88, 92, 64, 100];
// Sumar 5 puntos de bonificación con fn()
$bonificadas = array_map(fn(int $nota): int => min(100, $nota + 5), $notas);

echo "Notas originales: " . implode(", ", $notas) . "<br>";
echo "Notas con bono de Kilopolis (+5): <strong>" . implode(", ", $bonificadas) . "</strong>";
?>

</body>
</html>
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de PHP y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.