No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Funciones an贸nimas

21/25
Recursos

Aportes 12

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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 PHP, una funci贸n an贸nima es una funci贸n sin un nombre espec铆fico. Se crean utilizando la palabra clave `function` seguida de par茅ntesis que pueden contener par谩metros, y luego el cuerpo de la funci贸n. No se les asigna un nombre como las funciones regulares. En su lugar, se almacenan en una variable o se utilizan directamente en el contexto en el que se necesitan. ```php $sumar = function($a, $b) { return $a + $b; }; // Uso de la funci贸n an贸nima $resultado = $sumar(3, 5); echo $resultado; // Esto imprimir谩 8 ``` En este ejemplo, hemos creado una funci贸n an贸nima que toma dos par谩metros y devuelve la suma de ellos. Luego, la asignamos a la variable `$sumar` y la llamamos posteriormente. Las funciones an贸nimas son especialmente 煤tiles cuando necesitas pasar una funci贸n como argumento a otra funci贸n, como en el caso de funciones de orden superior o cuando trabajas con funciones de devoluci贸n de llamada (callbacks). Adicionalmente, en PHP, puedes utilizar la funci贸n `use` para capturar variables desde el 谩mbito que rodea la funci贸n an贸nima (clausura). ```php $mensaje = "Hola desde el 谩mbito externo"; $mostrarMensaje = function() use ($mensaje) { echo $mensaje; }; $mostrarMensaje(); // Esto imprimir谩 "Hola desde el 谩mbito externo" ``` En este caso, la funci贸n an贸nima tiene acceso a la variable `$mensaje` gracias a la cl谩usula `use`.

no entend铆 la diferencia entre global y use

Retaxmaster siempre le colocas humor a las clases, 鈥淯n Array que contenga 1,2,3,4 por que soy muy creativo鈥 jajajaja. Excelente sigue con esa actitud.

para acceder al ambito global de una variable en una funcion exiten varios metodos.

Global

$a = 1;
$b = 2;

function Suma()
{
    global $a, $b;

    $b = $a + $b;
}

/*Tambi茅n podemos hacer uso de global de la siguiente manera*/

$foo = "variable local";

function test() {
    echo '$foo en el 谩mbito global: ' . $GLOBALS["foo"] . "\n";
    echo '$foo en el 谩mbito simple: ' . $foo . "\n";
}

Otra forma es usando la referencia del lugar en memoria de la variable

$var = "tests";

function foo(&$var) { }

y la que aprendimos en esta clase que es haciendo uso de use

$message = 'hello';

$example = function () use ($message) {
    var_dump($message);
};

esto es parte de la clase de php b谩sico.

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();


?>