No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Funciones anónimas

21/25
Recursos

Aportes 7

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

FUNCIONES ANONIMAS

Las funciones anónimas o también conocidas como Closures son funciones que podemos definir sin necesidad de asignarles un nombre. Son muy similares a los callbacks de Javascript

Las podemos guardar dentro de variables, pero su uso mas común es pasarlas como parámetro de otra función.

Las funciones anónimas son una instancia de la clase Closure

<?php

$numbers = [1,2,3,4];

$numbers_by_2 = array_map(function($current){
    return $current * 2;
},$numbers);

print_r($numbers_by_2);

echo "\n";

Cuando queremos que una variable externa exista dentro de un Closure sin necesidad de pasarla como parámetro podemos usar la palabra reservada “use”

$michi = "Mr.Michi";

$change_michi_name = function() use($michi){
    echo $michi;
};

$change_michi_name();
echo "\n";

Con “use” cambiamos el ambito de la variable de global a local y la podemos usar dentro del closure,
pero debemos tener en cuenta que solo podemos leerla, mas no cambiar su valor

Quiero compartirles apuntes de las clases con el rofesor Italo, donde se explica lo mismo con palabras mas puntuales.

<?php

// Una funcion anonima se usa en un a variable que requiere logica
$greet = function ($name) {
    return "HOla {$name}";
};

echo $greet('Kenneth');
echo "<br>";


function saludar(Closure $lang, $name)
{
    // $lang es la variable que contiene la funcion anonima
    // la palabra closure, es un parametro de PHP que indica:
    // 'requiero que esa variable sea una funcion'
    return $lang($name);
}

$es = function ($name) {
    return "Hola, {$name}";
};

$en = function ($name) {
    return "Hello, {$name}";
};


echo saludar($es, "Lynda");
echo "<br>";
echo saludar($en, "Brenda");
echo "<br>";

<?php

$numbers = [1,2,3,4];
$number_multiply = readline("Escribe el numero por el cual quieres multiplicar: ". PHP_EOL);
$numbers_by_2 = array_map(function($current) use ($number_multiply) {
    return $current * $number_multiply;
},$numbers);

print_r($numbers_by_2);

echo PHP_EOL;

video minuto 9:24, si usamos la referencia de la variable global si la podríamos sobrescribir y asignarle un nuevo valor

<?php
$michi = “Mr. Michi”;
$change_michi_name= function() use(&$michi){
$michi = “Mr.Michis2”;
};
$change_michi_name();
echo $michi;

En la siguiente clase veremos arrow functions y aquí les dejo un ejemplo de como lograr lo mismo que el profe pero con arrow function.

$numbers = [2,4,6,8];

$by_2 = array_map(fn($current) => $current * 2, $numbers);

print_r($by_2);

Si use solo lee el valor, y no lo puede modificar, ¿por qué no simplemente se pasa dicho valor como argumento generando un nuevo parámetro en la función anónima? ¿Cuál es la diferencia?

Codigo de la clase:

<?php
/* $numbers = [1,2,3,4,5,6,7,8,9,10];
$numbers_by_2 = array_map(function($current){
    return $current*2;
},$numbers);

print_r($numbers_by_2);
 */

 $michi = "MICHI";
 $change_michi_game = function() use ($michi){
    echo $michi;
 };
$change_michi_game();


?>