VSCode PHP Intelephense无法检测到我的库

3
我正在从PhpStorm切换到VSCode进行PHP开发,但遇到了一个问题:对于我的多根工作区,它只能检测当前存储库中的类,而不能检测项目中的所有其他存储库和库。例如,在尝试自动完成类、转到定义等时。
我正在开发一个TYPO3项目,使用composer。因此,嵌套项目的结构如下:
path-to-html/
path-to-html/public/typo3conf/ext/{extension1, extension2, etc.}

我已经安装了VSCode PHP Intelephense扩展,并根据其说明进行了配置。但是,正如我所说的,我只能获取当前存储库的符号完成,而不能获取TYPO3项目所有库的符号完成。我应该如何配置呢?
我已阅读所有Intelephense选项,并尝试设置以下选项:
    "settings": {
        ...
        "intelephense.environment.documentRoot": "/path-to-html",
        "intelephense.environment.includePaths": [
            "/path-to-html/public/typo3conf/ext/extension_1",
            ...
        ]
    }

但它仍然不起作用。

这个回答解决了你的问题吗?如何将TYPO3库添加到Visual Studio Code中? - Martin Zeitler
@MartinZeitler 感谢你的回答,但并不是很有用。我已经将TYPO3源文件夹添加到我的工作空间(即html文件夹)。我还尝试了再次运行composer install,但没有成功。 - DidacC
3个回答

2

免责声明:我还安装了“PHP Intellisense”。当我启用这两个扩展时,“转到定义”或“转到声明”等上下文菜单项才能正常工作。也许这与“PHP Intellisense”也使用语言服务器协议有关,但LSP的实现由“PHP Intelephense”提供。诚然,我并不完全理解它。

无论如何,这些“PHP Intelephense设置”对我有效。

我现在正在使用这些设置进行本地TYPO3 CMS 10版本,基于ddev。

我将其作为屏幕截图提供,因为这些是VSCode 工作区设置,而我无法弄清楚VSCode存储这些设置的位置。(它们未存储在$HOME/.config/Code/Usersettings.json文件中)。

vscode settings

我认为我可以使用$HOME/ddev/typo3-10/public/typo3/sysext/代替$HOME/ddev/typo3-10/public/typo3/。尚未尝试

关键是,

  • Intelephense 需要几分钟才能在更改设置后捕获它们。红色波浪线不会立即消失
  • 不用说,“转到定义”(打开文档预览窗口)、“转到声明”(打开PHP类文件)等仅适用于Intelephense Premium。

1
瞥一眼您的解决方案后,我输入了 $HOME/my/path,经过一番搜索,才意识到您的屏幕截图中使用 $HOME 来替换您实际的主目录路径。提醒其他人注意,变量 $HOME 不起作用,请使用实际的绝对路径,这样就可以运行(对我来说是即时的)。 - Thomas
好的,谢谢。也许我会上传一个编辑过的截图,其中包含真实的绝对路径到我的主目录;但是这样我就必须指出用户应该输入他们主目录(或vendor/子目录)的绝对路径。 - knb
看起来Intelephense在捕捉环境变化方面非常缓慢(或者vscode报告它们的速度很慢)。当我运行composer dump-autoload时,通常什么都不会发生,直到我重新加载vscode。我还将vendor/添加到Intelephense的includePaths中,这似乎加快了新类的“采用”。 - InanisAtheos

1

再次感谢您的回答,但我已经尝试将该选项设置为多个嵌套存储库,但仍然无法检测到这些库。我不知道可能发生了什么。 - DidacC

1

我刚刚退出了VS Code,然后重新打开它。 VS Code会在退出时的确切状态下打开。 Intelephense将扫描供应商文件夹。 不需要进行任何配置更改。


我的那边也解决了。我只需要退出所有的VS Code窗口,再重新打开,问题就已经解决了。 - Abel Callejo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接