当我必须编写对可调用函数的引用时,我使用PHP的标准语法定义为:
PHP函数的名称作为字符串传递.可以使用任何内置或用户定义的函数[...省略...].
实例化对象的方法作为包含索引0处的对象和 索引1处的方法名称 (aka字符串)的数组传递.
通过传递类名 (仍然是字符串) 而不是索引0处的对象,也可以传递静态类方法而无需实例化该类的对象.
从PHP 5.2.3开始,也可以传递 (字符串) 'ClassName :: methodName'.
除了常见的用户定义函数,匿名函数也可以传递给回调参数.
对于诸如函数名重构或查找用法之类的操作,所有这些方式都不是"IDE友好的" .
在我的回答中,我提出了一个解决方案,但是还有其他方法可以应用,甚至是完全不同的,允许IDE"找到"方法的调用?
你已经接近了你可以做的最短的事情
您可以直接在函数调用中完美地调用匿名函数,而无需使用变量
例如,您可以替换:
$callable=function($param) use ($object){ return $object->myMethod($param); } call_user_func($callable, $param);
通过:
call_user_func(function($param) use ($object){ return $object->myMethod($param); }, $param);
您将不得不在将来的PHP版本中等待箭头函数,并且您应该能够使用以下内容:
call_user_func(fn($a) => $object->myMethod($a), $param);