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

Анонимные функции в 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 по 30.11
втрати противника
орієнтовно склали:
328760 ( +1180 ) особового складу
5551 ( +13 ) танків
10340 ( +28 ) бойових бронемашин
7909 ( +1 ) артилерійських систем
910 ( +0 ) РСЗВ
600 ( +0 ) засоби ППО
323 ( +0 ) літаків
324 ( +0 ) гелікоптерів
10361 ( +13 ) автомобільної техніки
22 ( +0 ) кораблі / катери
1567 ( +0 ) крилаті ракети
5954 ( +10 ) БПЛА
1124 ( +3 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) war.submarines

Поиск