Aprendiendo PHP: funciones

Introducción

Las funciones son uno de los recursos más importantes para un desarrollador de aplicaciones. Una función es una agrupación de sentencias que tienen por objetivo ser reutilizadas. A nivel visual también ofrecen la ventaja de la organización de código; no es lo mismo tener un script de 200 líneas una detrás de otra, que un script de 200 líneas organizado en 10 funciones de 20 líneas cada una. A golpe de vista puedes ver y entender qué hace cada parte del código.

Las funciones pueden ser llamadas desde cualquier parte de nuestro script, haciendo su reutilización muy fácil y sencilla. Agrupar nuestro código en funciones es una buena práctica que trae consigo los siguientes beneficios directos:

  • Se reduce el tamaño del código.
  • Se reduce el tiempo de desarrollo.
  • Si se producen errores, es más fácil detectarlos.
  • El código queda organizado.

codeintel

Funciones definidas por el usuario

Son las que creamos nosotros, de nuestro puño y letra. La sintaxis básica de una función es la siguiente:

Por ejemplo, queremos crear una función que nos muestre la fecha actual:

Hemos incluido el concepto return: es una sentencia opcional para devolver el resultado de la función al código que la llamó. Se puede devolver cualquier tipo de variable, incluidos arrays y objetos. Esto causa que la función finalice su ejecución inmediatamente y pase el control de nuevo a la línea desde la que fue llamada.

Una función puede ser llamada dentro de otra, de manera que no se iniciará hasta que llamemos a la primera. Ejemplo:

Argumentos de funciones

Los argumentos son parámetros o variables que podemos pasar a las funciones. Van dentro del paréntesis de la declaración del nombre de la función. Por ejemplo, queremos sumar dos números dados $a y $b:

Aprovechando esta parte de argumentos voy a comentar el concepto de recursividad: se dice que una función es recursiva cuando se llama a ella misma dentro del cuerpo de la propia función. Dentro de una función recursiva podemos distinguir dos partes:

  • Los casos base: son aquellos que para su solución no requieren utilizar la función que se está definiendo.
  • Los casos recursivos: son aquellos que sí que requieren utilizar la función que se está definiendo.

Por ejemplo, queremos obtener de manera recursiva los números enteros a partir de un número dado, y teniendo de límite el 20:

Dos ejemplos clásicos de recursividad son la sucesión de Fibonacci: es una sucesión de números que empieza por 0 1 y los siguientes son la suma de los dos anteriores -> 0 1 1 2 3 5 8 13 21 …; y el cálculo factorial de un número: la expresión es N! (número y exclamación), es el resultado de multiplicar todos los números naturales  desde el 1 hasta N. Por ejemplo 5! es 1 x 2 x 3 x 4 x 5 = 120.

Funciones variables

PHP admite el concepto de funciones variables. Esto significa que si un nombre de variable tiene paréntesis anexos a él, PHP buscará una función con el mismo nombre que lo evaluado por la variable, e intentará ejecutarla. Entre otras cosas, esto se puede usar para implementar llamadas de retorno, tablas de funciones, y así sucesivamente. Por ejemplo:

Funciones internas (incluidas)

El core de PHP nos proporciona cientos y cientos de funciones ya desarrolladas y optimizadas listas para su uso. En el querido manual encontramos la referencia a estas funciones organizadas por categorías.

Por ejemplo, tenemos un array de números desordenados y queremos hacer una ordenación inversa:

 

Funciones anónimas

Las funciones anónimas, también conocidas como clausuras (closures), permiten la creación de funciones que no tienen un nombre especificado. Son más útiles como valor de los parámetros de llamadas de retorno, pero tienen muchos otros usos. Veamos un par de ejmplos:

 

¡Eso es todo sobre las funciones! Os dejo el archivo funciones.zip que hemos utilizado en esta entrada. En el siguiente rootie de PHP hablaremos sobre PHP Orientado a Objetos y una introducción a las Clases.

Posted in PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *