gpt4 book ai didi

php - 将 PHP 方法转换为闭包

转载 作者:行者123 更新时间:2023-12-02 13:53:08 24 4
gpt4 key购买 nike

有没有办法将 PHP 中的方法转换为闭包类型?

class myClass {

public function myMethod($param) {
echo $param;
}

public function myOtherMethod(Closure $param) {
// Do something here...
}
}

$obj = new myClass();
$obj->myOtherMethod((closure) '$obj->myMethod');

这只是一个示例,但我不能使用 callable 然后使用 [$obj,'myMethod']

我的类非常复杂,我不能仅仅为了闭包类型而改变任何东西。

所以我需要将方法转换为闭包。还有其他方法或者我应该使用这个吗?

$obj->myOtherMethod(function($msg) use($obj) {
$obj->myMethod($msg);
});

我希望使用更少的内存并以更少的资源消耗方式。有这样的解决办法吗?

最佳答案

从 PHP 7.1 开始,您可以使用:

$closure = Closure::fromCallable([$obj, 'myMethod'])

从 PHP 5.4 开始,您可以使用:

$method = new ReflectionMethod($obj, 'myMethod');
$closure = $method->getClosure($obj);

但是在您的示例中,myMethod() 接受一个参数,因此应该将闭包调用为 $closure($msg)

关于php - 将 PHP 方法转换为闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701482/

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