如何在 intelephense 中定义一个未定义的函数(在 VSCode 中)?

Posted

技术标签:

【中文标题】如何在 intelephense 中定义一个未定义的函数(在 VSCode 中)?【英文标题】:How to define an undefined function in intelephense (in VSCode)? 【发布时间】:2021-01-31 17:39:21 【问题描述】:

Intelephense 显示“未知类型”和“未知功能”等错误,但我不知道如何修复它们。

我的项目(一个 TYPO3 作曲家安装)有一个“公共”文件夹,这就是为什么我通过将其设置为 ./public 来相应地配置 intelephense 的 intelephense.environment.documentRoot 选项。

第一个屏幕截图显示了项目的页面树,其中打开了一个部分,其中发生了错误。

当我打开“function.php”时,intelephense 通知我“未定义类型 'Aimeos\Map'”:

Map 在 Map 中的 function.php 文件旁边定义,如下所示:

代码中还有其他地方,intelephense 告诉我“未定义函数'map'”:

我查看了 intelephense 的“函数”模板,但我不知道该放什么。如果我还必须定义一个类模板和/或其他任何东西,也不是。

这是我对 intelephense 的 VSCode 配置:

可以看出,我尝试使用否定符“!”排除“vendor/aimeos”文件,但我认为这不是 intelephense 中的已知配置值。

我必须做些什么才能使 intelephense 正常工作? 谢谢!

【问题讨论】:

我对 VSCode/Intelephense 几乎一无所知,但 that answer 对类似问题似乎暗示(最近添加的)功能有很多问题。 谢谢!那里有很多有价值的信息! “供应商”不能被禁用 - 这是一回事。但是随后会发生很多无用的文件索引,由于性能原因,我想抑制这些索引。仍然需要弄清楚,我的存根必须是什么样子以及放置它们的位置...... 我建议将 documentRoot 设置为上一级并排除所有不需要的目录,如 node_modules 但仍保留供应商目录。否则,像 ViewHelpers 这样的很多东西也不会显示正确的信息 【参考方案1】:

即使在添加了适当的使用声明后,我也收到了这些警告。对我来说,我必须打开供应商文件夹中声明这些类型的文件,然后保存有问题的文件。这似乎以某种方式触发了 intelephense 类型解析机制,并且警告消失了。一旦 intelephense 识别出它们,您就可以安全地从供应商文件夹中关闭这些文件。我尝试关闭 vs 代码并重新打开它,但仍然没有警告。您的里程可能会有所不同。

【讨论】:

以上是关于如何在 intelephense 中定义一个未定义的函数(在 VSCode 中)?的主要内容,如果未能解决你的问题,请参考以下文章

在 CakePHP 2 中不会加载 Intelephense 存根

无论如何在 Visual Studio 智能感知中定义一个未定义的对象?

如何在 Typescript 中检查未定义

如何修复自定义模块中的“未定义变量”

如何在 Delphi 中禁用关于“返回值......可能未定义”的警告?

在 Jinja2 中,如何测试变量是不是未定义?