如何声明在PhpDoc(对于intelephense)中定义了常量? TL;博士
如何使用PhpDoc/DocBlocks记录外部代码中定义的常量,使其在静态代码分析中不会显示为未定义的变量 细节: 我正在尝试写一个小的WordPress插件。我有一些PHP代码,如下所示如何声明在PhpDoc(对于intelephense)中定义了常量? TL;博士,php,wordpress,phpdoc,docblocks,intelephense,Php,Wordpress,Phpdoc,Docblocks,Intelephense,如何使用PhpDoc/DocBlocks记录外部代码中定义的常量,使其在静态代码分析中不会显示为未定义的变量 细节: 我正在尝试写一个小的WordPress插件。我有一些PHP代码,如下所示 defined('ABSPATH') or die('Access denied!'); // Avoid direct file request function getPluginInfo($key) { require_once ABSPATH . '/wp-admin/includes/p
defined('ABSPATH') or die('Access denied!'); // Avoid direct file request
function getPluginInfo($key) {
require_once ABSPATH . '/wp-admin/includes/plugin.php';
$data = get_plugin_data(MY_PLUGIN_FILE, true, false);
return $data[$key];
}
我正在使用VSCode插件(它提供了一个PHP语言服务)。我已经安装了所有必要的依赖项,包括在VSCode设置中将“wordpress”作为存根列出。总的来说,intelephense运行得很好,并且在显示有关我的代码以及WordPress库代码的信息方面做得很好
然而,intelephense显示了一个错误:“未定义常量”…\ABSPATH“(1011)”(其中点是一个名称空间,为了简洁起见,我省略了它)
因此,intelephense似乎没有注意到第一行所暗示的条件——即如果未定义ABSPATH
,执行将不会到达引用它的后续代码。(这很好,程序流分析可能要求太高)。无论如何,我认为我应该能够添加某种类型的PhpDoc(或另一个注释),以向代码分析器指示变量已定义。大概是这样的:
/**
* @var string ABSPATH
*/
或者这个:
/**
* @global string ABSPATH
*/
但这两者都不会导致错误消失。(我还尝试了@const
,它似乎不是真正的标记。它也不起作用。)
在代码中是否有某种方式可以指示ABSPATH是在外部代码中定义的,还是在外部范围中定义的?在函数顶部添加一行,如global ABSPATH
似乎也不正确,因为ABSPATH
不是一个变量。这是一个定义创建的常量
谢谢 与您为wp intellisense启用的wordpress存根类似,您必须为常量创建存根文件,并将其添加到工作区中,以便对其进行索引
谢谢。对于其他感兴趣的人,我还将提到,本地文件夹路径可以添加到存根列表中,因此这个自定义存根文件不需要放在实际的工作区代码中。