Привет, ребята, мне интересно, как сделать следующее:
У меня есть класс
class SomeClass {
private $someVar;
public function Init($func) {
$this->someVar = $func;
}
public function DoSomething() {
$this->someVar("asdasdasd");
}
}
$obj = new SomeClass();
$obj->Init(function ($param){var_dump($param);});
$obj->DoSomething();
И когда я вызываю метод DoSomething, я получаю сообщение о том, что SomeClass::someVar()
- неопределенный метод. Но когда я использую отладчик, я вижу, что это объект замыкания. Если я сохраню функцию в локальной переменной ($someVar
без $this
) и вызову ее в функции Init()
, она будет работать нормально. Но я не хочу вызывать функцию там. Я хочу позвонить позже.
Даже если я сохраню его в $this->someVar
и назову его в том же объеме, он не будет работать.