gpt4 book ai didi

php - 如何将 PHP 闭包(lambda 函数)保存到 $this->var 中并稍后从同一类的另一个方法中调用它?

转载 作者:可可西里 更新时间:2023-11-01 01:06:53 25 4
gpt4 key购买 nike

我有课

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 并在相同的范围内调用它,它也不起作用。

最佳答案

也许你应该试试这个:

public function DoSomething()
{
$tmpVar = $this->someVar;
$tmpVar("asdasdasd");
}

或者,如果您愿意,可以这样:

public function DoSomething()
{
call_user_func($this->someVar, "asdasdasd");
}

关于php - 如何将 PHP 闭包(lambda 函数)保存到 $this->var 中并稍后从同一类的另一个方法中调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com