Какая польза от блока аргументов в анонимных функциях

В этом примере:

$foo = function () use (){
//     ^---------^ what is the use?

}

Помимо того, что мы можем использовать функцию use () часть для импорта данных в функцию, как обычная функция, как в:

function bar ($foo){

}

но я не понимаю, что function () часть может быть использована для?

1

Решение

например:

$a = 1;
$foo = function ($b, $c) use ($a)
{
echo $a . PHP_EOL;
echo $b . PHP_EOL;
echo $c . PHP_EOL;
};

$foo(2, 3);
$a = 5;
$foo(7, 8);

Будет вывод:

1
2
3
1
7
8

$ b, $ c — будут параметры, которые вы передаете на исполнение.
$ а привязан / импортирован при создании. Так что если вы измените его после определения $ foo, оно не изменится.

6

Другие решения

Блок параметров предназначен для ввода параметров. Так что, если я определю

$foo = function($bar) use ($baz) {
return $bar + $baz;
}

а потом я, скажем, пройти $foo к другой функции или привязать ее к другому классу, я могу сделать как

function bonk($bar, $foo) {
$baz = 4;
return $foo($bar);
}

а где-то еще позвони

// Returns 7
bonk(3, $foo);

Один позволяет получить переменную из контекста, в то время как другой должен быть передан. Например, у меня есть $ baz, доступный мне в классе, который определяет $ bonk, поэтому я передаю его, но я пока не знаю, что такое $ bar будет до тех пор, пока не будет вызван bonk куда-нибудь еще с $ bar

Итак, давайте представим, что я класс с именем Cats, и у меня есть объект SiameseCat, доступный для меня. У меня есть метод с именем doTheThing, который принимает функцию и параметр. Он говорит кошке, что делать и, по желанию, что делать. Так что у него всегда одна и та же кошка, но в зависимости от того, откуда я ее называю, сиамская кошка может делать разные глаголы для разных существительных, но я знаю, что это делает моя кошка, потому что именно там я определил кошку.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector