Cómo se usan las funciones anónimas en PHP

Inicio / Cómo hacer para... / Cómo se usan las funciones anónimas en PHP

Las funciones anónimas son, como te habrás imaginado, funciones que no tienen un nombre.

Esto puede sonar bastante raro, siendo que seguramente cuando aprendiste qué es y cómo se define una función en PHP te dijeron que era algo con la pinta:

function f( $param1, $param2 )
{
    // Algo de código
}

Pues te mintieron.

Bueno, no, en realidad no te mintieron pero te dieron una versión parcial de la verdad.

Lo que quiero decir es que generalmente las cosas son así como las conoces, pero existen otras posibilidades.

Te presento la función anónima:

$f = function( $param1, $param2 ) {
    return $param1 + $param2;
}

En este ejemplo estoy asignando a la variable $f la función que estoy definiendo (¡No el resultado de su evaluación! No te confundas).

Y ¿por qué querrías hacer una cosa semejante? (Además de molestar a tus compañeros de trabajo o tratar de sacar un poco de chapa).

Sucede que muchas veces la función que estás definiendo tiene un uso extremadamente puntual (Es decir, no va a ser reutilizada) y es más conveniente entonces definirla en el mismo lugar donde se usa (Además de dejar el código más claro).

Es muy común usar las funciones anónimas en combinación con los callbacks, por ejemplo, si usás la función array_map, es más directo usar una función anónima para expresar la transformación que necesitás realizar. Ejemplo:

$simples = [ 1, 2, 3, 4, 5 ];
$dobles = array_map( function( $a ) { return $a * 2; }, $simples );

También podés usar funciones anónimas en llamadas a funciones que vos mismo hayas definido (Siempre y cuando estén preparadas para recibir este tipo de parámetros).

¿Te parece más claro escribir de esta forma o usando funciones con nombre?

mchojrin

Hola! Soy Mauro Chojrin, estudié la Lic. en Ciencias de la Computación en la UBA.

Me desempeño como docente de programación desde el año 1997.

Pasé por diferentes instituciones (Escuela Técnica ORT, Digital House, EducacionIT, ITMaster, Escuela DaVinci entre otros).

Actualmente coordino el desarrollo de proyectos web en https://leewayweb.com y los cursos dictados en Leeway Academy

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.