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:
<!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>
¿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.