Ключевое слово 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.