Анонимные функции 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.