Замыкания в PHP
Замыкания в PHP представляют анонимную функцию, которая может использовать переменные из своего локального окружения. В отличие от обычных анонимных функций замыкания в PHP применяют выражение use.
Вначале рассмотрим анонимную функцию, которая пытается использовать некоторую внешнюю переменную:
<?php
$number = 89;
$showNumber = function()
{
echo $number;
};
$showNumber();
?>
Анонимная функиция, которая представлена переменной $showNumber, пытается обратиться к внешней переменной $number. Однако при выполнении скрипта мы увидим в браузере сообщение об ошибке:
Warning: Undefined variable $number in C:\localhost\hello.php on line 13
То есть по умолчанию переменной $number для анонимной функции не существует. Из данной сиутации мы можем выйти, использовав оператор global или массив $GLOBALS, которые рассматриваются в одной из последующих тем. Тем не менее замыкания также позволяют решить эту проблему. Так, трансформируем функцию в замыкание:
<?php
$number = 89;
$showNumber = function() use($number)
{
echo $number;
};
$showNumber();
?>
Выражение use() получает внешние переменные, которые анонимная функция собирается использовать. И теперь при ее выполении браузер выведет значение переменной $number.
Подобным образом функция-замыкание может захватывать и большее количество внешних переменных, а также как и другие функции применять параметры:
$a = 8;
$b = 10;
$closure = function($c) use($a, $b)
{
return $a + $b + $c;
};
$result = $closure(22); // 40
echo $result;
Важлива інформація
України
втрати противника
орієнтовно склали: