vim-dap
Vim/Neovim debugger plugin providing a terminal interface to the Debug Adapter Protocol
Fast PHP language server with deep type intelligence. Generics, Laravel, PHPStan annotations. Ready in an instant.
A fast, lightweight PHP language server written in Rust. Ready in seconds, uses a fraction of the RAM other language servers need, and stays responsive throughout. No indexing phase, no waiting.
Check out the documentation to get started.
Note
PHPantom is in active development. The core editing features are solid and used daily on production codebases.
PHPantom focuses on deep type intelligence. Here's how it compares:
| PHPantom | Intelephense | PHP Tools | Phpactor | PHPStorm | |
|---|---|---|---|---|---|
| Common LSP features1 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Workspace symbols | ✅ | ✅ | ✅ | ✅ | ✅ |
| Call hierarchy | ❌ | ❌ | ❌ | ❌ | ✅ |
| Semantic tokens | ✅ | ❌ | ✅ | ❌ | ✅ |
| Linked editing | ✅ | ❌ | ✅ | ❌ | ✅ |
| Extras2 | ✅ | 💰 | 🚧 | 🚧 | ✅ |
| Diagnostics | |||||
| PHPStan integration | ✅ | ❌ | ❌ | 🚧 | 🚧 |
| Undefined variable | ✅ | 💰 | ✅ | ✅ | ✅ |
| Type errors | ✅ | 💰 | ✅ | 🚧 | ✅ |
| Unused variable | ✅ | ❌ | ✅ | ❌ | ✅ |
| Type Intelligence | |||||
Generics / @template |
✅ | 🚧 | ✅ | 🚧 | ✅ |
@mixin completion |
✅ | 💰 | ✅ | ✅ | 🚧 |
| Array / object shapes | ✅ | ✅ | ✅ | 🚧 | 🚧 |
| PHPStan types | ✅ | ❌ | 🚧 | 🚧 | 🚧 |
| Conditional return types | ✅ | ❌ | ✅ | 🚧 | ❌ |
| Closure parameter inference | ✅ | 🚧 | 🚧 | 🚧 | 🚧 |
| Laravel | ✅ | ❌ | 🚧 | ❌ | 🚧 |
| Blade templates | 🚧 | ❌ | ✅ | ❌ | ✅ |
| Other frameworks4 | 🚧 | 🚧 | 🚧 | 🚧 | 🧩 |
| Refactoring | |||||
| Rename | ✅ | 💰 | 💰 | ✅ | ✅ |
| Common refactorings3 | ✅ | ❌ | 💰 | ✅ | ✅ |
| Extract constant | ✅ | ❌ | ❌ | ✅ | ✅ |
| Extract interface | ✅ | ❌ | ❌ | ✅ | ✅ |
| Promote constructor parameter | ✅ | ❌ | ❌ | ❌ | ✅ |
| Simplify expressions | ✅ | ❌ | 💰 | ❌ | ✅ |
| Modernize syntax5 | ✅ | ❌ | 💰 | ❌ | ✅ |
| Performance | |||||
| Time to ready | 5 s | 1 min 25 s | 3 min 17 s | 15 min 39 s | 17 min 55 s |
| RAM usage | 360 MB | 520 MB | 3.9 GB | 498 MB | 1.7 GB |
| Disk cache | 0 | 45 MB | 0 | 4.1 GB | 551 MB |
Want to verify? Open
examples/demo.phpin your editor and trigger completion at the marked locations. It exercises every type intelligence feature in the table, including edge cases where tools diverge. For Laravel specifically, openexamples/laravel/— a standalone project with real Eloquent models, config, routes, views, and translations that exercises Eloquent property resolution, query builder chaining, scopes, custom collections, and go-to-definition for config keys, route names, and translation strings.
@throws detects uncaught exceptions in the method body, @param pre-fills from the signature, and tags are filtered to context and never suggested twice.array_map preserve element types.$users->map(fn($u) => $u->name) infers $u as User from the collection's generic context.@return types resolve to the concrete branch at each call site.@phpstan-type, @phpstan-import-type, and object{...} shapes all resolve through to completions.app('cache') resolve to the bound class, auth()->user() resolves to your configured model, and query string compleation on both relation and column names. Blade templates get completion, hover, go-to-definition, and diagnostics through virtual PHP preprocessing. No ide-helper or database access required.@deprecated detection, and namespace segment drilling.PHPantom understands Composer projects out of the box, but works without setup on non-Composer projects too:
autoload_classmap.php and autoload_files.php.composer.json, resolves the web root, and indexes Drupal-specific directories and PHP extensions (.module, .install, .theme, etc.) with .gitignore bypassed so that Composer-managed core and contrib code is always available.require_once discovery. Functions from required files are available for completion.PHPantom stands on the shoulders of:
@phpstan-* annotations.MIT. See LICENSE.
more like this
Vim/Neovim debugger plugin providing a terminal interface to the Debug Adapter Protocol
Open the next door in your Vim journey — personalized command discovery based on your actual usage
search projects, people, and tags