Ответ
Замыкание (closure) в PHP — это анонимная функция, которая может захватывать переменные из внешней области видимости, сохраняя их состояние на момент своего создания. Это реализуется с помощью ключевого слова use.
Пример создания и использования:
// Функция, создающая замыкание-умножитель
function createMultiplier($factor) {
return function($number) use ($factor) {
return $number * $factor;
};
}
$double = createMultiplier(2);
$triple = createMultiplier(3);
echo $double(5); // Выведет: 10
echo $triple(5); // Выведет: 15
Ключевые особенности:
- Захват переменных: Переменные из внешней области видимости передаются в замыкание через
use. По умолчанию они передаются по значению (создается копия). - Передача по ссылке: Чтобы изменять исходную переменную, нужно использовать ссылку:
use (&$variable). - Область применения: Замыкания широко используются для callback-функций, обработчиков событий, отложенного выполнения и реализации простых стратегий или фабрик.
Пример с передачей по ссылке:
$counter = 0;
$increment = function() use (&$counter) {
$counter++;
return $counter;
};
echo $increment(); // 1
echo $increment(); // 2