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 鈥渦se鈥

$michi = "Mr.Michi";

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

$change_michi_name();
echo "\n";

Con 鈥渦se鈥 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 = 鈥淢r. Michi鈥;
$change_michi_name= function() use(&$michi){
$michi = 鈥淢r.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();


?>