在visuel studio代码中处理php回调的“0引用”,

w7t8yxp5  于 2023-09-29  发布在  PHP
关注(0)|答案(2)|浏览(101)

在Visual Studio Code中编辑WordPress代码时,
如果我有一个函数定义,然后我将它用作对add_actionadd_filter调用的回调,如下所示:

function myCallback() {
    //do some stuff
}

add_action('init', 'myCallback') ;

但是因为它被用作字符串,所以它不被算作对函数的引用,而intelisense在我的函数上面说0 references,这在某种程度上是正确的,但在实际意义上也是错误的和误导的。
我能做些什么来告诉visual studio代码添加对该函数的引用吗?
我希望我可以做一些类似的事情(这不是真实的工作代码...):

function myCallback() {
    //do some stuff
}

add_action('init', myCallback.name) ;

即通过引用myCallbck的成员字段或方法来获取myCallbck的名称。
或者(这也不是一个当前有效的解决方案-只是一个想法...)

add_action('init','myCallback' /* @references:myCallback */)

即,通过添加一些注解,Intelephanse可以使用这些注解来理解存在引用,否则它将错过该引用。

balp4ylt

balp4ylt1#

如果您使用的是PHP 8.1,则可以使用first class callable syntax

add_action('init', myCallback(...));

我试过DEVSENSE的PHP扩展,下面的可调用形式可以作为参考识别。

class Foo {
    public static function myCallback() {}
}

add_action('init', [Foo::class, 'myCallback']);
lf3rwulv

lf3rwulv2#

您可以使用回调函数将函数分配给:

$callable = function() {
   echo 'Hello world!';
};

call_user_func($callable);

变量$callable的类型为callable,call_user_func的参数类型为callable,就像add_action一样。
你可以这样使用它:

add_action('init', $callable);

这适用于多个版本:https://3v4l.org/1tH3K
如果我没有看错3v4l.org,它适用于
5.3.0 - 5.3.29、5.4.0 - 5.4.45、5.5.0 - 5.5.38、5.6.0 - 5.6.40、7.0.0 - 7.0.33、7.1.0 - 7.1.33、7.2.0 - 7.2.34、7.3.0 - 7.3.33、7.4.0 - 7.4.33、8.0.0 - 8.0.30、8.1.0 - 8.1.23、8.2.0 - 8.2.10

相关问题