一个用 Rust 编写的高性能、轻量级 PHP 语言服务器。几秒钟内即可就绪,内存占用仅为其他语言服务器的一小部分,并且全程保持响应迅速。没有索引阶段,无需等待。
PHPantom 专注于深度类型智能。以下是它与其他工具的对比:
PHPantom | Intelephense | PHP Tools | Phpactor | PHPStorm | |
|---|---|---|---|---|---|
常见 LSP 特性 ¹ | ✅ | ✅ | ✅ | ✅ | ✅ |
工作区符号 | ⚠️ | ✅ | ✅ | ✅ | ✅ |
语义令牌 | ✅ | ❌ | ✅ | ❌ | ✅ |
链接编辑 | ❌ | ❌ | ✅ | ❌ | ✅ |
额外特性 ² | ✅ | 💰 | ⚠️ | ⚠️ | ✅ |
诊断功能 | |||||
PHPStan 集成 | ✅ | ❌ | ❌ | ✅ | ✅ |
未定义变量 | ❌ | 💰 | ✅ | ✅ | ✅ |
类型错误 | ❌ | 💰 | ✅ | ⚠️ | ✅ |
未使用变量 | ❌ | ❌ | ✅ | ❌ | ✅ |
类型智能 | |||||
泛型 / @template | ✅ | ⚠️ | ✅ | ⚠️ | ✅ |
@mixin 补全 | ✅ | 💰 | ✅ | ✅ | ⚠️ |
数组 / 对象形状 | ✅ | ✅ | ✅ | ⚠️ | ⚠️ |
PHPStan 类型 | ✅ | ❌ | ⚠️ | ⚠️ | ⚠️ |
条件返回类型 | ✅ | ❌ | ✅ | ⚠️ | ❌ |
闭包参数推断 | ✅ | ⚠️ | ⚠️ | ⚠️ | ❌ |
Laravel Eloquent | ✅ | ❌ | ⚠️ | ❌ | ❓ |
重构功能 | |||||
重命名 | ✅ | 💰 | 💰 | ✅ | ✅ |
常见重构 ³ | ✅ | ❌ | 💰 | ✅ | ✅ |
提取常量 | ❌ | ❌ | ❌ | ✅ | ✅ |
提升构造函数参数 | ✅ | ❌ | ❌ | ❌ | ✅ |
简化表达式 | ✅ | ❌ | 💰 | ❌ | ✅ |
性能 | |||||
就绪时间 | < 1 秒 | 1 分 25 秒 | 3 分 17 秒 | 15 分 39 秒 | 19 分 38 秒 |
内存占用 | 59 MB | 520 MB | 3.9 GB | 498 MB | 2.0 GB |
磁盘缓存 | 0 | 45 MB | 0 | 4.1 GB | 551 MB |
@throws 会检测方法体中未捕获的异常,@param 会根据函数签名预填充,标签会根据上下文过滤且永不重复建议。array_map 等数组函数都能保留元素类型。@return 类型会在每个调用点解析为具体的分支。@phpstan-type、@phpstan-import-type 以及 object{...} 形状都能正确解析并提供补全。@deprecated 检测、命名空间分段钻取等。PHPantom 开箱即用即可理解 Composer 项目,同时也支持无需配置的非 Composer 项目:
autoload_classmap.php 和 autoload_files.php。更多:https://github.com/AJenbo/phpantom_lsp