Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何声明在PhpDoc(对于intelephense)中定义了常量? TL;博士_Php_Wordpress_Phpdoc_Docblocks_Intelephense - Fatal编程技术网

如何声明在PhpDoc(对于intelephense)中定义了常量? TL;博士

如何声明在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

如何使用PhpDoc/DocBlocks记录外部代码中定义的常量,使其在静态代码分析中不会显示为未定义的变量

细节: 我正在尝试写一个小的WordPress插件。我有一些PHP代码,如下所示

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存根类似,您必须为常量创建存根文件,并将其添加到工作区中,以便对其进行索引


谢谢。对于其他感兴趣的人,我还将提到,本地文件夹路径可以添加到存根列表中,因此这个自定义存根文件不需要放在实际的工作区代码中。