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