Слава Україні!

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

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

Анонимная функция - как и следует из названия - не имеет имени. Во всем остальном - это обычная функция. Из-за отсутствия названия анонимные функции используются для передачи в качестве параметров функции другие функции или присваивания их переменным.


/** Присваиваем переменной анонимную ф-цию */
$hello = function($name)
{
    echo "<h2>Hello $name</h2>";
};
 

Анонимная функция определяется с помощью ключевого слова function и принимает параметр $name. Также она имеет некоторый блок операторов. Для вызова подобной функции применяется имя представляющей ее переменной

$hello("World");

Фактически подобная переменная применяется как стандартная функция.


<?php
    $hello = function($name)
    {
        echo "<h2>Hello $name</h2>";
    };
    $hello("Tom");
    $hello("Bob");
?>

Также анонимные функции могут возвращать некоторое значение:


<?php
    $sum = function($a, $b)
    {
        return $a + $b;
    };
    $number = $sum(5, 11);  //16
    echo $number;
?>
    

Распространенным случаем применения анонимных функций является передача их параметрам других функции. Такие анонимные функции еще называют функциями обратного вызова или коллбеками (callback function).


<?php
    function welcome($message)
    {
        $message();
    }

    welcome(function()
    {
        echo "Hello!";
    });
?>

В данном случае функция welcome() имеет параметр $message, который внутри функции вызывается подобно функции $message(). При вызове функции welcome() параметру $message передается анонимная функция, которая выводит строку "Hello!". Подобным образом мы можем передавать в одну функцию различные анонимные функции


<?php
    function welcome($message)
    {
        $message();
    }
    $goodMorning = function() { echo "<h3>Доброе утро</h3>"; };
    $goodEvening = function() { echo "<h3>Добрый вечер</h3>"; };

    welcome($goodMorning);          // Доброе утро
    welcome($goodEvening);          // Добрый вечер
    welcome(function(){ echo "<h3>Привет</h3>"; }); // Привет
?>
Предыдущая заметка Красивые price-таблицы
Следующая заметка MySQL: Полезные запросы

Важлива інформація

Міністерство оборони
України
з 24.02 по 17.07
втрати противника
орієнтовно склали:
562510 ( +1110 ) особового складу
8238 ( +11 ) танків
15871 ( +9 ) бойових бронемашин
15411 ( +43 ) артилерійських систем
1120 ( +1 ) РСЗВ
893 ( +1 ) засоби ППО
361 ( +0 ) літаків
326 ( +0 ) гелікоптерів
20741 ( +61 ) автомобільної техніки
28 ( +0 ) кораблі / катери
2398 ( +0 ) крилаті ракети
12224 ( +31 ) БПЛА
2586 ( +9 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) war.submarines

Поиск