Valores de parámetros predeterminados
Parte de la sección Fundamentos del Journey de PHP de Coddy. Lección 64 de 71.
A veces quieres que un parámetro de función tenga un valor alternativo cuando no se proporciona ningún argumento. Los valores de parámetros no predeterminados te permiten definir cuál debe ser el valor de un parámetro si quien realiza la llamada no lo especifica.
Para establecer un valor predeterminado, asígnalo directamente en la declaración de la función mediante el operador =:
<?php
function greet($name = "Guest") {
echo "Hello, $name!\n";
}
greet("Alice");
greet();
?>Esto produce:
Hello, Alice!
Hello, Guest!Cuando llamas a greet("Alice"), el argumento sobrescribe default. Cuando llamas a greet() sin argumento, PHP usa "Guest" en su lugar.
Puedes mezclar parámetros obligatorios y opcionales, pero los parámetros con valores predeterminados deben ir después de los obligatorios:
<?php
function createUser($name, $role = "member") {
return "$name is a $role";
}
echo createUser("Alice") . "\n";
echo createUser("Bob", "admin");
?>Esto produce:
Alice is a member
Bob is a adminEl primer parámetro $name es obligatorio, mientras que $role tiene el valor predeterminado "member" si no se proporciona. Este patrón hace que tus funciones sean más flexibles sin requerir que quienes las llaman proporcionen siempre todos los argumentos.
Desafío
FácilLee dos líneas de entrada:
- Un nombre de producto (por ejemplo,
Laptop) - Una cantidad (por ejemplo,
5). Esta entrada puede estar vacía
Crea una función llamada formatOrder que acepte dos parámetros: $product (obligatorio) y $quantity (opcional, con un valor predeterminado de 1). La función debe devolver una cadena con el siguiente formato:
Order: [quantity]x [product]Si la entrada de cantidad está vacía, llama a la función únicamente con el nombre del producto (usando la cantidad predeterminada). De lo contrario, llámala con ambos valores.
Imprime el resultado devuelto.
Ejemplo 1:
Si las entradas son Laptop y 5, la salida debe ser:
Order: 5x LaptopEjemplo 2:
Si las entradas son Keyboard y una línea vacía, la salida debe ser:
Order: 1x KeyboardEjemplo 3:
Si las entradas son Monitor y 3, la salida debe ser:
Order: 3x MonitorPruébalo tú mismo
<?php
// Leer entrada
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));
// TODO: Crea la función formatOrder con $product (requerido) y $quantity (opcional, por defecto 1)
// La función debe devolver una cadena en el formato: "Order: [quantity]x [product]"
// TODO: Llama a la función apropiadamente según si quantity está vacío o no
// Si quantity está vacío, llama solo con product (usa el valor por defecto)
// De lo contrario, llama con product y quantity
// Imprime el resultado
echo $result;
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparaciónIgualdad e identidadOperadores lógicos, parte 1Operadores lógicos, parte 2Repaso: lógica simple2Variables y tipos de datos
NúmerosCadenas y comillasBooleanosConvenciones de nombresRepaso: inicialización de variablesVariables vacíasConcatenación de cadenasObtener datos del usuarioConvertir a otros tipos5Lógica condicional
Sentencia ifIf - ElseEl operador ternarioOperador de coalescencia nulaSentencia switchRepaso - Tomar decisiones3Operadores básicos
Operadores aritméticosOperador móduloOperador de exponenciaciónAsignación combinadaIncremento/DecrementoPrecedencia de operadoresRepaso: cálculos simplesOperadores de cadenasPractica por tu cuenta: Compilador de PHP online