必须安装composer插件(by tobias hopp)并配置intelephense的includepaths为./vendor,执行composer dump-autoload -o生成类映射,且以含composer.json的目录为工作区根启动vs code。

VS Code 装什么插件才能识别 composer.json 和依赖类?
只装 PHP Intelephense 或 PHP Tools 不够——它们默认不解析 composer.json 的自动加载规则,导致 new SomePackageClass() 依然标红。必须搭配能读取 Composer 配置的插件,或者手动补全索引路径。
- 推荐装
Composer(by Tobias Hopp):轻量,专注解析composer.json、生成autoload_classmap.php并通知语言服务器 - 如果已用
PHP Intelephense,必须开启"intelephense.environment.includePaths",把vendor/autoload.php所在目录加进去(不是文件本身) - 别装“PHP IntelliSense”(deprecated),它不支持 Composer 2+ 的 PSR-4 动态映射
vendor/autoload.php 被提示“找不到”,但文件明明存在
常见于项目根目录没被 VS Code 当作工作区根,或 PHP 解释器路径没设对。Intelephense 不会主动扫描子目录找 vendor,它只认你明确告诉它的路径。
- 确保 VS Code 是以项目根目录(含
composer.json)打开的,不是上层文件夹 - 检查设置里
"intelephense.environment.phpVersion"是否匹配你本地 PHP 版本(比如"8.2"),版本不一致会导致autoload.php解析失败 - 运行过
composer install吗?vendor/目录为空时,任何插件都无从索引
为什么 use 语句能提示,但 new 实例化没补全?
这是 PSR-4 映射未被正确加载的典型表现。Intelephense 默认只解析当前文件和 includePaths 下的代码,不会递归扫描 vendor/ 全量类(太慢),它依赖 composer dump-autoload -o 生成的优化类映射。
- 执行
composer dump-autoload -o,生成vendor/composer/autoload_classmap.php - 在 VS Code 设置中添加:
"intelephense.environment.includePaths": ["./vendor"](注意是vendor目录,不是vendor/autoload.php) - 重启 VS Code 窗口(不是重载窗口),否则 Intelephense 不会重新扫描 includePaths
PHP Intelephense 提示“Class not found”但运行正常
说明静态分析和运行时环境脱节。最常发生在使用了动态类名(class_exists($name))、条件加载(if (extension_loaded())),或 Composer 的 files 自动加载项未被插件识别。
- 检查
composer.json的"autoload": {"files": [...]},这些函数文件不会生成类映射,需手动加到intelephense.stubs或用@var注解临时绕过 - 确认没有在
vendor/外另建了同名命名空间——Intelephense 可能优先索引了错误路径 - 禁用其他 PHP 插件(如 PHP CS Fixer、PHP Debug),它们可能干扰语言服务器启动顺序
真正卡住的地方往往不是插件没装,而是 composer dump-autoload -o 没跑、工作区根选错、或者 includePaths 指向了文件而非目录——这三个点漏一个,智能提示就断在半路。










