Анонимные функции PHP


Анонимная функция - это функция без какого-либо определенного пользователем имени. Такая функция также называется замыканием или лямбда-функцией. Иногда вам может понадобиться функция для одноразового использования. Замыкание - это анонимная функция, которая закрывается над средой, в которой она определена. В ней нужно указать ключевое слово use. Наиболее распространено использование анонимной функции для создания встроенной функции обратного вызова.

Синтаксис

$var = function ($arg1, $arg2) { return $val; };
Между ключевым словом function и открывающей скобкой нет имени функции.

После определения функции ставится точка с запятой, поскольку анонимные определения функций являются выражениями.

Функция присваивается переменной и вызывается позже, используя ее имя.

Когда она передается другой функции, которая может вызвать его позже, он называется обратным вызовом.

Верните его из внешней функции, чтобы он мог получить доступ к переменным внешней функции. Это называется закрытием.

Пример анонимной функции

<?php
$var = function ($x) {return pow($x,3);};
echo "cube of 4 = " . $var(4);
?>
Это даст следующий результат. −

cube of 4 = 64
Анонимная функция обратного вызова

В следующем примере анонимная функция используется в качестве аргумента для встроенной функции usort(). Функция usort() сортирует данный массив с помощью функции сравнения

<?php
$arr = [10,3,70,21,54];
usort ($arr, function ($x , $y) {
   return $x > $y;
});
foreach ($arr as $x){
   echo $x . "\n";
}
?>
Это приведет к следующему результату. −

3
10
21
54
70
Анонимная функция как замыкание

Замыкание также является анонимной функцией, которая может получить доступ к переменным вне своей области действия с помощью ключевого слова use

<?php
$maxmarks=300;
$percent=function ($marks) use ($maxmarks) {return $marks*100/$maxmarks;};
echo "marks=285 percentage=". $percent(285);
?>
Это даст следующий результат.

marks=285 percentage=95
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, функции




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 23. Введение в JCF Java
Роботы, "заменяющие" людей, кто следующий?
Тест на JS и PHP на гитхабе