Что такое анонимная функция

Ответ

Анонимная функция (или замыкание, closure) — это функция без имени, которую можно сохранить в переменную, передать как аргумент или вернуть из другой функции. Часто используется для callback-ов и коротких операций.

$greet = function($name) {
    return "Привет, $name!";
};

echo $greet('Мир'); // Выведет: Привет, Мир!

Ключевые особенности:

  • Создается через ключевое слово function без имени
  • Может принимать аргументы и возвращать значения
  • Имеет доступ к переменным внешней области через use
  • Полезна для обработчиков событий, колбэков в array_map/filter и т.д.

Пример с замыканием:

$multiplier = 2;
$double = function($x) use ($multiplier) {
    return $x * $multiplier;
};
echo $double(5); // 10

Ответ 18+ 🔞

Слушай, вот объясняю, как бабушке на лавочке. Есть у нас в PHP такая штука — анонимная функция. По-умному её ещё замыканием зовут, closure там всякое. А по-простому — это функция, у которой имени нет, как будто она инкогнито, понимаешь? Её можно в переменную запихнуть, как котлету в булку, и потом вызывать. Или передать куда-то как аргумент — типа, "на, держи, выполни это". Очень удобно для всяких мелких операций или когда нужно callback сделать.

Вот смотри, как это выглядит, ёпта:

$greet = function($name) {
    return "Привет, $name!";
};

echo $greet('Мир'); // Выведет: Привет, Мир!

Видишь? Создали через function, но имени не дали. Просто взяли и присвоили переменной $greet. А потом вызываем её, как обычную функцию, только через переменную. Красота же, блядь!

Теперь про ключевые фишки, чтобы ты не охуел потом:

  • Создаётся через function и всё, имени — ноль.
  • Может принимать аргументы и что-то возвращать — как и любая уважающая себя функция.
  • А вот это самое интересное — может доступ иметь к переменным снаружи. Но не просто так, а через волшебное слово use. Без него — нихуя не увидит, будет как слепой котёнок.
  • Где это полезно? Да везде! Обработчики событий, колбэки в этих твоих array_map, array_filter — просто овердохуища применений.

Вот тебе пример с замыканием, чтобы совсем всё стало ясно:

$multiplier = 2;
$double = function($x) use ($multiplier) {
    return $x * $multiplier;
};
echo $double(5); // 10

Смотри, что тут происходит. Есть переменная $multiplier снаружи. Чтобы функция $double могла её использовать, мы говорим: "слушай, функция, используй (use) вот эту переменную". И она её как бы "замыкает" внутри себя — отсюда и название. Получается своя маленькая вселенная с данными. Удобно, правда? А то без этого пришлось бы глобальные переменные таскать, а это, я тебе скажу, пиздец как некрасиво и ненадёжно.