在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);
});
我希望使用更少的内存和更少的资源消耗方式。有这样的解决办法吗?
2条答案
按热度按时间bkhjykvo1#
从PHP 7.1开始,你可以用途:
从PHP 5.4开始,你可以用途:
但是在你的例子中,
myMethod()
接受一个参数,所以闭包应该被称为$closure($msg)
。5gfr0r5j2#
PHP 8.1更新
PHP 8.1引入了一种更短的方法来从函数和方法创建闭包:
RFC:PHP RFC: First-class callable syntax