php - 如何声明在 PhpDoc 中定义了一个常量(用于智能电话)?

标签 php wordpress phpdoc docblocks intelephense

TL; 博士
如何使用 PhpDoc/DocBlocks 记录在外部代码中定义的常量,以便它不会在静态代码分析中显示为 undefined variable ?
细节:
我正在尝试编写一个小型 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 插件 vscode-intelephense (提供 PHP 语言服务)。我已经安装了所有必要的依赖项,包括在 VSCode 设置中将“wordpress”列为 stub 。总的来说,智能电话运行良好,并且在显示有关我的代码和 WordPress 库代码的信息方面做得很好。
然而,智能电话显示错误: "未定义的常量 '...\ABSPATH' (1011)" (这里的点是一个命名空间,为简洁起见,我省略了它)。
因此,似乎 intelphense 没有接受第一行暗示的条件——即 if ABSPATH未定义,执行将不会到达引用它的后续代码。 (这很好,程序流分析可能要求太多)。无论如何,我认为我应该能够添加某种 PhpDoc(或其他注释注释)来向代码分析器表明变量 定义。像这样的东西:
/**
 * @var string ABSPATH
 */
或这个:
/**
 * @global string ABSPATH
 */
但这些都不会导致错误消失。 (我也试过 @const,这似乎不是一个真正的标签。它也不起作用。)
代码中是否有某种方式可以表明 ABSPATH 是在外部代码中定义的还是在外部作用域中定义的?在函数顶部添加一行,如 global ABSPATH;似乎也不对,因为 ABSPATH不是变量。这是一个 define -创建常量。
谢谢!

最佳答案

与您已启用以提供 wp 智能感知的 wordpress stub 类似,您必须为常量创建一个 stub 文件并将其添加到您的工作区,以便可以对其进行索引。

<?php

const ABSPATH = '';

关于php - 如何声明在 PhpDoc 中定义了一个常量(用于智能电话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59674864/

相关文章:

正则表达式去除 phpdoc 多行注释

PHP - 基于另一个数组显示一个数组

php - Codeigniter数据库配置

php - 403 - 禁止 : Trying to get WordPress to Run on AWS

mysql - Woocommerce 将销售价格设置为正常价格 - 15% 折扣

css - PHPDocumentator 正在创建 .cs 文件而不是 .css

PHP require_once 绝对路径与相对路径(不工作)

php - 对象集合类与否

php - 通过functions.php覆盖小部件

php - 如何在 PHP 中的 PHPDocumentor block 中粘贴特殊符号,例如 "*/"?