Назад к вопросам
Junior — Middle
97
Обязательно ли применять ключевое слово this в методе класса при создании замыкания внутри него?
Компании, где спрашивали
АО Тривио
Ответ от нейросети
sobes.tech AI
В PHP при создании замыкания (Closure) внутри метода класса ключевое слово this не обязательно применять явно, если замыкание объявлено внутри метода и не использует use. Внутри такого замыкания this доступен автоматически, начиная с PHP 5.4.
Однако, если замыкание создаётся вне контекста объекта или передаётся как callback, чтобы получить доступ к свойствам и методам объекта, нужно либо использовать use ($this), либо объявить замыкание как метод класса.
Пример:
class MyClass {
private $value = 10;
public function getClosure() {
return function() {
return $this->value; // $this доступен без use
};
}
}
$obj = new MyClass();
$closure = $obj->getClosure();
echo $closure(); // Выведет 10
Если же замыкание создаётся вне метода, нужно явно передать $this:
$closure = function() use ($this) {
return $this->value;
};