Es bueno encapsular el código que necesita ejecutar una y otra vez dentro de una función para no tener que escribirlo una y otra vez. Reutilizar el código y mantenerlo SECO (Don't Repeat Yourself) es clave para proporcionar una aplicación que se pueda mantener. Una función es simplemente un fragmento de código PHP al que puede llamar y puede que tenga o no parámetros que pueda enviarle, y también puede o no devolver un valor. Nos gusta dar nombres descriptivos a nuestras funciones para que podamos inferir qué acción nos pueden proporcionar. Las funciones son los motores y agitadores en PHP, son la pieza principal para hacer que su software realmente haga algo. En esta publicación, analizaremos más de cerca las funciones definidas por el usuario, los argumentos a las funciones, la devolución de valores de una función, las funciones recursivas, así como funciones variables. Tenemos mucho que cubrir, ¡así que entremos de inmediato!


Funciones definidas por el usuario

PHP tiene muchas funciones integradas y, a veces, parece abrumador por dónde empezar. Afortunadamente, ya cubrimos las funciones de cadena de php más utilizadas, así como las funciones de matriz de php más utilizadas . Si lees sobre ellos, te pondrás en marcha con las funciones clave integradas del idioma. Ahora mismo vamos a hablar sobre cómo crear nuestras propias funciones para nuestro uso de casos especiales.

La sintaxis para crear una función es muy sencilla. Vamos a ver:

El nombre de la función es cualquier cadena que comience con una letra o un guión bajo seguido de una combinación de dígitos, letras o guiones bajos. Hágalo fácil y elija nombres descriptivos simples para sus funciones, sin necesidad de ser sofisticado. Las funciones de PHP no distinguen entre mayúsculas y minúsculas; sin embargo, es una buena práctica utilizar siempre todas las letras minúsculas. Aunque no es necesario, las funciones normalmente devolverán un valor. Esto se hace usando la palabra clave return, y se puede usar cualquier número de declaraciones de devolución en la función en escenarios de verificación de condiciones. Una vez que se alcanza la palabra clave de retorno en el programa, el control vuelve al código de llamada junto con el valor producido por la expresión en la función. Por ejemplo:


Argumentos para funciones

Las funciones pueden aceptar un cierto número de argumentos declarándolos en la definición de la función. Hay dos formas diferentes de pasar parámetros a una función y las veremos ahora.

Pasando por valor

Por lo general, los parámetros se pasan por valor en PHP, pero también tiene la opción de pasar por referencia. El argumento en la función es cualquier expresión válida que cuando se evalúa asigna el valor a la variable en la función.

En la doublefailfunción, usamos pasar por valor, por lo que cuando la función se ejecuta, duplica la copia de la variable, no el valor de la variable de la persona que llama como lo hace la doubleitfunción. Puede obtener lo que quiera de doublefail si devuelve la copia como en el último ejemplo.

Pasando por referencia

Puede anular las reglas de alcance y hacer que la función obtenga acceso directo a una variable utilizando pasar por referencia . Para hacer esto, agregue un ampersand &al principio del nombre de la variable en la lista de parámetros.

La doubleitfunción pasa $valuepor referencia, es decir el valor real de en $blugar de una copia de dicho valor. Esto permite que la función modifique el valor directamente y cuando luego hacemos eco del valor, vemos que se duplica de 4 a 8 con éxito. Solo se pueden suministrar variables a los parámetros declarados como pasantes por referencia.

Listas de argumentos de longitud variable

Una función puede necesitar un número variable de argumentos. Para declarar una función con un número variable de argumentos, omita el bloque de parámetros de la siguiente manera:

PHP le brinda tres funciones para usar en la función para que se le pasen los parámetros.

func_get_args()devuelve una matriz de todos los parámetros proporcionados a una función;
func_num_args()devuelve el número de parámetros proporcionados a una función;
func_get_arg()devuelve un argumento específico de la lista de parámetros.

Por ejemplo:

En el siguiente ejemplo, la add_arguments_lis()función acepta cualquier número de argumentos. Luego recorre esos argumentos, se suma al total en cada iteración y devuelve la suma de todos los valores una vez que se completa. Si no se dan parámetros, simplemente devolverá falso.

Estas funciones no se pueden utilizar directamente como parámetro de otra función. Primero debe establecer una variable para el resultado de la función y luego usarla en la llamada a la función.


Devolver valores de una función

Las funciones de PHP devuelven solo un valor con la returnpalabra clave:

Si desea devolver varios valores, debemos devolver un array:

o devolver un object:

Si una función no proporciona ningún valor de retorno, la función vuelve NULL.


Funciones recursivas

Una función recursiva es una función que se llama a sí misma. La recursividad parece sencilla, pero una vez que empiezas a trabajar con ella y tratas de entender realmente cómo funciona, puede ser muy complicada.
Para escribir una función recursiva, debe proporcionarle algún medio de retorno o, de lo contrario, seguirá llamándose a sí misma hasta que el programa falle. Esto se conoce como el caso base. El caso base a menudo se encuentra en un condicional como una ifdeclaración que detendrá la recursividad una vez que se cumpla una condición. También necesita un caso recursivo. Aquí es donde tiene lugar la recursividad, o el bucle si se quiere. La función se invoca sobre sí misma utilizando el caso recursivo.

Factoriales

El ejemplo de libro de texto de recursividad es el ejemplo factorial. El símbolo de la función factorial ( !) significa multiplicar una serie de números no negativos descendentes así:

4! = 4 × 3 × 2 × 1 = 24
7! = 7 × 6 × 5 × 4 × 3 × 2 × 1 = 5040
8! = 8 x 7 × 6 × 5 × 4 × 3 × 2 × 1 = 40320

En lugar de hacer estos cálculos manualmente, podríamos crear una función que acepte un número y luego calcule el factorial por recursión:

Muchos tutoriales omiten el hecho de que esto proviene de la fórmula n! = n × (n-1)!que significa "el factorial de cualquier número es ese número multiplicado por el factorial de (1 menor que ese número) "

Veremos paso a paso esta función usando el número 4 para que sea manejable. Para hacer esto, he puesto el código anterior en eclipse pdt y entraré en cada paso de ejecución.

1. La definición de la función se lee en la memoria
2. factorial(4);Se llama.
3. $numberahora es 4, así que pasamos a la cláusula else
4. ¡Recurrencia! La función se llama a sí misma pasando 3 ya que su parámetro
5. $numberahora es 3, así que pasamos a la cláusula else
6. ¡Recursión! La función se llama a sí misma pasando 2 ya que su parámetro
7. $numberahora es 2 así que pasamos a la cláusula else
8. ¡Recursión! La función se llama a sí misma pasando 1 como parámetro
9. $ númeroahora es 1, por lo que devolvemos 1
10. echo factorial(4);ahora genera la respuesta de 24 .


Funciones variables

Las funciones variables serán útiles cuando cubramos la programación orientada a objetos. Mientras tanto, veremos los conceptos básicos de cómo funcionan las funciones variables. Una función variable es simplemente donde asigna un nombre de función a una variable y luego puede llamar a esa función usando el nombre de la variable.

Recordemos nuestro ejemplo de la función factorial. Podríamos crear un nombre de variable aleatorio y asignarle esa función usando la siguiente sintaxis:

Tenga en cuenta que las construcciones del lenguaje como echo()isset()no se pueden llamar a través de funciones variables:

Ahora que tenemos un buen control de las funciones en PHP, ¡desarrollemos algunas funciones PHP String Helper para ayudar con las tareas comunes de manipulación de cadenas!