Как передать внешнюю переменную в замыкание?

Ответ

Три способа:

$db = new PDO('...');

// 1. use - захват из внешней области видимости
$query = function(string $sql) use ($db) {
    return $db->query($sql);
};

// 2. Аргумент функции
$query = function(PDO $db, string $sql) {
    return $db->query($sql);
};

// 3. Стрелочная функция (авто-захват)
$query = fn(string $sql) => $db->query($sql);

// 4. Closure::bind - привязка к объекту
$fn = Closure::bind(function() {
    return $this->privateField;
}, $obj, get_class($obj));
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.