PhpStorm 无法识别 opentelemetry 扩展中的函数

问题描述 投票:0回答:1

我下载了 OpenTelemetry Windows DLL,并在 php.ini 文件中引用了它。

php -mi
表示 opentelemetry 已加载。

php -mi | grep telemetry
opentelemetry

php -r 
表示该功能存在:

php -r "print_r(get_extension_funcs('opentelemetry'));"
Array
(
    [0] => OpenTelemetry\Instrumentation\hook
)

在 PhpStorm 的 PHP 解释器中还配置了确切的 PHP,因为当我从 PhpStorm 的运行按钮执行

phpinfo
时,它显示已加载的 opentelemetry。在 PhpStorm 中运行代码时我还可以获得跟踪数据,这意味着扩展有效。

但是为什么PhpStorm无法识别扩展中的函数?

php windows phpstorm open-telemetry
1个回答
0
投票

PhpStorm 使用 存根文件 为自定义 PHP 扩展/模块(来自

.dll
/
.so
文件)提供的功能提供代码补全(和静态分析)。

存根文件是这些类/方法/函数/等的有限 PHP 版本,具有(可选)完整的 PHPDoc 块但空主体。总的来说,它与 C 中的

.h
文件类似。您可以在任何标准 PHP 类(例如 MySQL
str_replace()
)上按
Ctrl + Click
并查看自己在 PhpStorm 中是如何完成的(IDE 将打开相应的存根)文件在另一个编辑器选项卡中)。更多信息:https://stackoverflow.com/a/35923482/783119


你现在可以做什么:

  1. 尝试最新的2023.3 Beta构建并找到并启用该扩展存根(它应该在那里):https://www.jetbrains.com/phpstorm/nextversion/

  2. 使用当前的 PhpStorm 版本:获取最新存根存储库的自己的副本,并在

    Settings/Preferences | PHP | PHP Runtime | Advanced settings | Default stubs path
    处指定路径。

    但要小心这一点:升级到 2023.3 版本时,不要忘记清除它并切换回捆绑版本(过时的存根可能会导致其他问题 - 提供错误的方法签名/无法识别新添加的类/方法ETC)。或者确保自己维护最新版本的存根。

  3. 使用任何 PhpStorm 版本:只需获取单个 opentelemetry.php 存根文件并将其放置在项目中的任何位置,以便对其进行索引:IDE 将使用它来完成代码。

    同样:当您升级到 2023.3 或更高版本时,最好删除此类自定义存根文件并切换到捆绑的存根文件。

© www.soinside.com 2019 - 2024. All rights reserved.