PHP: Firma de la función
En esta lección aprenderemos a trabajar con la firma de una función. También aprenderemos cómo una función recibe y devuelve valores. Analizaremos las funciones abs()
y round()
.
Función abs()
La función abs()
, que devuelve el valor absoluto, recibe un parámetro: un número. Si llamamos a abs()
sin parámetros, PHP mostrará el siguiente mensaje de error:
TypeError: abs() expects exactly 1 argument, 0 given
Esto indica que la función espera un parámetro, pero la llamamos sin ninguno.
Los parámetros de abs()
solo pueden ser números. Si intentamos pasarle una cadena de texto, obtendremos el siguiente error:
TypeError: abs(): Argument #1 ($num) must be of type int|float, string given
El resultado de llamar a esta función siempre es un número. Otra función puede tener un número diferente de parámetros y diferentes tipos de parámetros. Por ejemplo, puede existir una función que reciba tres parámetros: un número, una cadena de texto y otro número.
¿Cómo sabemos cuántos y qué tipo de parámetros necesita la función abs()
y qué tipo de valor devuelve? Lo vemos en la firma de la función. La firma define los parámetros de entrada y sus tipos, así como el parámetro de salida y su tipo.
Puedes leer más sobre la función abs()
en la documentación oficial de PHP. En la sección "Descripción" encontrarás el siguiente texto:
abs(int|float $num): int|float
Devuelve el valor absoluto de num.
Esta es la firma de la función y una breve explicación en español.
La información se interpreta de la siguiente manera:
- El nombre de la función es
abs
- La función recibe un parámetro: un número (num)
- La función devuelve un número
- La función devuelve el valor absoluto de num
Si hay más de un parámetro, debemos pasarlos en el mismo orden en que están definidos en la firma. Cualquier función siempre devuelve solo un valor. Esta es una limitación del lenguaje y no puede ser violada.
Argumentos por defecto
Veamos la función round()
. Esta función redondea un número:
<?php
$result = round(10.25, 0); // 10
Le pasamos dos argumentos: el número y la precisión de redondeo. El valor 0
significa que se redondeará al número entero más cercano.
La mayoría de las veces, queremos redondear al número entero, por lo que los creadores de la función round
hicieron que el segundo argumento sea opcional y le dieron un valor predeterminado de 0
. Esto significa que podemos omitir el segundo argumento y el resultado será el mismo:
<?php
$result = round(10.25); // 10
Y si necesitamos una precisión diferente, podemos pasar un argumento:
<?php
$result = round(10.25, 1); // 10.3
Si una función en PHP tiene argumentos opcionales, siempre se colocan después de los argumentos obligatorios. Pueden ser cualquier cantidad de argumentos, dependiendo de la función. Pero estos argumentos siempre se colocan juntos y al final de la lista de argumentos.
Tarea
Ahora es tu turno de mirar la firma de una función en la documentación y entender cómo usarla. Puedes leer la documentación en español, pero un programador debe ser capaz de leer la documentación en inglés. Utiliza diccionarios o traductores si es necesario. Es mejor acostumbrarse y mejorar tus habilidades de lectura en inglés desde el principio, de lo contrario, tendrás dificultades en el futuro.
En PHP, hay una función llamada ucfirst()
. Estudia su firma en la página https://php.net/manual/es/function.ucfirst.php.
Escribe un programa que utilice la función ucfirst()
con la variable $text
y muestre el resultado en pantalla. El valor de la variable $text
ya está definido.
¿El ejercicio no pasa la prueba, qué debo hacer? 😶
Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.
Mi código funciona en mi entorno, pero no aquí 🤨
Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.
Mi código es diferente a la solución del profesor 🤔
Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.
En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.
Leí la lección, pero no entendí nada 🙄
Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.
Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.
Definiciones
Firma de la función — descripción formal de los tipos de argumentos y el tipo de valor devuelto por una función.