Что такое захват переменных? (use)

Ответ

Ключевое слово use позволяет замыканию захватить переменные из внешней области видимости:

$message = 'Hello';
$logger = function(string $level) use ($message) {
    echo "[$level] $message";
};

// По значению - замыкание получает копию
$x = 10;
$fn = function() use ($x) { echo $x; };
$x = 20;
$fn(); // 10 (копия на момент создания)

// По ссылке
$x = 10;
$fn = function() use (&$x) { echo $x; };
$x = 20;
$fn(); // 20 (актуальное значение)

В PHP (в отличие от Go/JS) переменные НЕ захватываются автоматически - нужно явно указать через use.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.