Top.Mail.Ru
Ответы

Анонимные функции и использование ключевого слова use (PHP)

Всем привет))
Добрался до closures, докатился, почти как колобок которого катили любопытство и жажда неизвестного. Так вот, его катили, а меня они пинают ногами, а я качусь)))

Возникла проблема.
Не могу понять почему используется ключевое слово use? Ведь можно получить тот же результат но без use. Пример на картинке.

В итоге возникли вопросы: В чем преимущество использования ключевого слова use?
Что оно дает чего не дает использование стандартного метода передачи аргументов посредством круглых скобок в функции?

Всем заранее спасибо за ответы)

Дополнен

Картинка не хочет загружаться (((
Вот код https://pastebin.com/LjmcjY91

Дополнен
Дополнен

Загрузилась)))

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
7лет

1. Если анонимная функция используется там, где набор передаваемых параметров от твоего желания никак не зависит. Например, в array_map, array_filter и т. д.

2. Если результатом функции является функция (а-ля JavaScript). Предельно упрощённый пример:

function check($min, $max) {
return function($val) use ($min, $max) { return $val >= $min && $val <= $max; }
}

Вот здесь, например, показано, как использовать: http://www.elisdn.ru/blog/96/functional-php-cost

P.S. Рассматривай создание анонимной функции как создание объекта, где список use сохраняется конструктором в атрибутах, а список параметров и тело функции (с заменой переменных в use на атрибуты объекта) переносятся в __invoke.

P.P.S. В PHP анонимная функция и есть объект. Правда, немного другой структуры: http://php.net/manual/ru/class.closure.php