Hubdev Manager Vscode
Gestiona sitios de desarrollo local de HubDev desde VS Code: link/unlink, iniciar/detener, renovar SSL y abrir en el navegador
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, keeps memory use modest even on large codebases, and stays responsive throughout. Indexing happens in the background, so you're never left waiting on it.
Check out the documentation to get started.
PHPantom focuses on deep type intelligence. Here's how it compares:
| PHPantom | Intelephense | PHP Tools | Phpactor | PHPStorm | |
|---|---|---|---|---|---|
| Core LSP features1 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Advanced navigation2 | ✅ | 🚧🔒 | 🚧 | 🚧 | ✅ |
| Editor extras3 | ✅ | 🚧🔒 | 🚧 | 🚧 | ✅ |
| Diagnostics | |||||
| Built-in diagnostics4 | ✅ | 🚧🔒 | ✅ | 🚧 | ✅ |
| External analyzer integration5 | ✅ | ❌ | ❌ | 🚧 | 🚧 |
| Type Intelligence | |||||
Generics / @template |
✅ | 🚧 | ✅ | 🚧 | 🚧 |
| Array / object shapes | ✅ | ✅ | ✅ | 🚧 | 🚧 |
| Advanced PHPDoc types6 | ✅ | 🚧🔒 | 🚧 | 🚧 | 🚧 |
| Closure parameter inference | ✅ | 🚧 | 🚧 | 🚧 | 🚧 |
| Frameworks | |||||
| Laravel & Blade | ✅ | ❌ | 🚧 | ❌ | 🚧🧩 |
| Symfony & Twig | ✅ | ❌ | ❌ | 🚧 | 🧩 |
| WordPress | ✅ | 🚧 | 🚧 | ❌ | ✅ |
| Drupal | ✅ | ❌ | ❌ | ❌ | ✅🧩 |
| Yii 3 | 🚧 | ❌ | ❌ | ❌ | 🚧🧩🔒 |
| Tempest | 🚧 | ❌ | ❌ | ❌ | 🧩 |
| PHPUnit & Pest | ✅ | ❌ | 🚧 | 🚧 | ✅ |
| Other frameworks | ❌ | 🚧 | 🚧 | 🚧 | 🧩 |
| Refactoring | |||||
| Rename | ✅ | ✅🔒 | ✅ | ✅ | ✅ |
| Extract & generate8 | ✅ | ❌ | 🚧🔒 | 🚧 | ✅ |
| Simplify & modernize9 | ✅ | ❌ | ✅🔒 | ❌ | ✅ |
| Performance | |||||
| Time to ready (from cache) | 2 s | 11 s (1 s) | 10 s | 1 min 34 s (4 s) | 1 min 7 s (5 s) |
| RAM | 578 MB | 766 MB | 594 MB | 467 MB | 2 GB |
| CPU time | 17 s | 16 s | 36 s | 5 min 33 s | 17 min 55 s |
| Disk cache | - | 51 MB | - | 2.3 GB | 379 MB |
🚧 = partial support. ❌ = not available. 🧩 = via plugin. 🔒 = paid tier.
1 Completion, hover, signature help, go-to-definition, find references, diagnostics, document symbols, workspace symbols.
2 Call hierarchy, type hierarchy, go-to implementation / type-definition, code lens.
3 Semantic tokens, inlay hints, auto-import, smart select, folding ranges, formatting, document links.
4 Undefined and unused variables, type errors, unknown symbols and members, argument counts.
5 PHPStan, PHPCS, PHPMD, and Mago run in-server, and their reports come with quick fixes rather than as relayed errors.
6 Conditional return types, type aliases, pseudo-types, `@mixin`.
8 Extract and inline, generate constructors and accessors, implement interfaces.
9 Rewrites to modern syntax, such as `match`, arrow functions, and simpler null checks.
Performance measured on a production Laravel codebase: 5.1K PHP files (389k lines) and 1.3K Blade templates (88k lines), with 27k vendor files (1.7M lines). Time to ready is the approximate wall-clock time from launch until full type intelligence is available on a cold start (first index). RAM is the steady resident memory once indexing has finished.
Independent, re-runnable type-inference conformance results across twelve PHP engines: php-typing-conformance (Qodana covers the PHPStorm engine, phpy the PHP Tools engine).
[!TIP] Want to verify? Open
examples/php/in your editor and trigger completion at the marked locations incompletion.php. It exercises every type intelligence feature in the table, including edge cases where tools diverge. Each framework has a standalone project of its own, with a README listing what to try:examples/laravel/,examples/symfony/,examples/wordpress/,examples/yii/, andexamples/tempest/.
@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, authorization strings resolve to the gate definition or policy method that declares them, and query string completion on both relation and column names. Blade templates get completion, hover, go-to-definition, and diagnostics through virtual PHP preprocessing, and Livewire components and Folio pages are understood alongside them. No ide-helper or database access required.post. completes and navigates the entity's attributes. The template directories are found from the templates themselves, with no configuration.php-stubs/wordpress-stubs once Composer installs it, and their return types follow the arguments. Hook names, core's included, complete and navigate between the places that fire a hook and the ones that listen to it, and the project's own rename. @global tags type the globals a function imports.view() complete and lead to their templates.$this is the test case your Pest.php binds.@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.
Gestiona sitios de desarrollo local de HubDev desde VS Code: link/unlink, iniciar/detener, renovar SSL y abrir en el navegador
Gestiona sitios de Laravel Herd desde VS Code: configuración de herd.yml, link/unlink, HTTPS y abrir en el navegador
A fast type checker and language server for Python
Laravel Blade formatter for VSCode
Nueva versión disponible.