Argumentos por defecto y variádicos
Argumentos con nombre, parámetros variádicos, y cómo recolectar un número desconocido de valores.
2 min de lectura
Más allá de los valores por defecto simples, PHP admite dos características que hacen más flexibles las llamadas a funciones: los argumentos con nombre y los parámetros variádicos.
Argumentos con nombre
<?php
function createUser(string $name, string $role = "member", bool $isActive = true) {
return "$name ($role) — active: " . ($isActive ? "yes" : "no");
}
echo createUser(name: "Amara", isActive: false);Los argumentos con nombre te permiten especificar parámetros por su nombre en lugar de por posición, en cualquier orden, y omitir los valores por defecto que no quieras sobrescribir — aquí, role conserva su valor por defecto "member" mientras que isActive se establece explícitamente, sin necesidad de repetir también role solo para llegar hasta él posicionalmente.
Combinando argumentos posicionales y con nombre
<?php
createUser("Diego", isActive: false);Los argumentos posicionales deben ir primero, pero cualquier parámetro después de ellos puede pasarse por nombre. Esto es especialmente útil para funciones con varios parámetros booleanos u opcionales, donde una llamada puramente posicional como createUser("Diego", "member", false) obliga a quien lee el código a contar parámetros para saber qué significa siquiera ese false.
Parámetros variádicos: recolectar argumentos adicionales
<?php
function sum(...$numbers) {
return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 10El ... antes del nombre de un parámetro recolecta cualquier número de argumentos restantes en un único array ($numbers aquí). Así es como PHP maneja funciones que aceptan un número variable de argumentos, como un sum() que debería funcionar tanto si se llama con dos números como con veinte.
Combinando parámetros fijos y variádicos
<?php
function logMessage(string $level, ...$details) {
echo strtoupper($level) . ": " . implode(", ", $details);
}
logMessage("error", "Connection failed", "Retrying in 5s");Un parámetro variádico debe ser el último en la lista de parámetros — cualquier parámetro fijo antes de él se rellena primero, y todo lo restante se recolecta en el array variádico.
Expandir un array en argumentos
<?php
function add($a, $b, $c) {
return $a + $b + $c;
}
$numbers = [1, 2, 3];
echo add(...$numbers); // 6El mismo operador ... funciona a la inversa en el sitio de la llamada: anteponer ... a un array expande sus elementos como argumentos individuales, en lugar de pasar el array en sí como un único argumento. Esto encaja de forma natural con una función variádica del lado receptor, pero funciona con cualquier función que espere esa cantidad de argumentos individuales.
Pon a prueba lo que acabas de aprender
4 preguntas rápidas. Respóndelas todas correctamente para desbloquear la siguiente lección.
Puedes hacer el cuestionario sin una cuenta — iniciar sesión solo hace que tu resultado cuente para tu progreso.