PHP Strom is a high-performance, fully open-source PHP language intelligence extension for VS Code.
It provides a complete PHP language experience with code completion, go to definition, hover, references, diagnostics, formatting, code actions, inlay hints, document links, type hierarchy, and more.
Why PHP Strom
- Fully open source under MIT
- Native bundled language server for macOS, Linux, and Windows in one VSIX
- Fast workspace indexing and incremental updates
- Rich PHP language features without a premium tier
- PHPDoc-aware analysis and configurable diagnostics
Features
PHP Strom includes support for:
- IntelliSense and symbol-aware completion
- Signature help and hover information
- Go to definition, declaration, type definition, and implementations
- Find references and document highlights
- Workspace symbols and document symbols
- Diagnostics for undefined symbols, undefined variables, and type issues
- Formatting with configurable brace style and indentation
- Code actions, code lens, inlay hints, and folding
- Document links and type hierarchy
A full feature specification is available in FEATURES.md.
Installation
Install from the VS Code Marketplace.
Development Build
make build-server, make build-server-local, and make test-server use the exact parser revision pinned in server/go.mod. They do not depend on a sibling checkout or a mutable clone of the parser repository.
For coordinated local development across both repositories, use make build-server-dev or make test-server-dev. These explicit development targets generate a temporary Go workspace using the sibling ../go-php-parser checkout.
Override the sibling path if needed:
make build-server-dev LOCAL_PHP_PARSER_DIR=/path/to/go-php-parser
Run the synthetic editor-path trace gate with:
make test-editor-latency
The gate launches fresh language-server processes for cold workspace indexing, then drives the real handler path through cached saves, body-only and dependency edits, debounce cancellation, stale-result rejection, and a collision-triggered full index fallback. It emits a machine-readable JSON report with end-to-end latencies and cache/index accounting. The fixture is synthetic; results are an absolute regression signal, not a claim about latency in a particular project.
Configuration
Important settings include:
phpstrom.enablephpstrom.environment.phpVersionphpstrom.environment.includePathsphpstrom.environment.documentRootphpstrom.files.excludephpstrom.diagnostics.*phpstrom.diagnostics.overridesphpstrom.format.*phpstrom.codeLens.*phpstrom.inlayHints.*
See FEATURES.md for the full configuration reference.
phpstrom.diagnostics.overrides accepts rule-specific matchers. For example:
{
"phpstrom.diagnostics.overrides": {
"PSR1.Classes.ClassDeclaration.PascalCase": {
"classes": ["/^Legacy_/", "SpecialClass"]
}
}
}
Matching classes are ignored by the scanner for that diagnostic code.
Cross-platform Packaging
The extension bundles platform-specific language server binaries for:
darwin-arm64darwin-x64linux-arm64linux-x64win32-arm64win32-x64
This allows a single VSIX to work across supported macOS, Linux, and Windows environments.
Repository
- Source: https://github.com/ayanozturk/vscode-php-strom
- License: MIT