PHP Project Guide
Foundational knowledge for working effectively on any PHP project in PhpStorm. Provides project detection, coding standards, testing patterns, framework guidance, and MCP tool usage.
Quick Start: First Interaction with a PHP Project
Run these steps when encountering a new PHP project for the first time.
1. Detect PHP environment
get_php_project_config()
Returns the configured PHP language level, interpreter details (name, path, local/remote), and runtime information (exact PHP version, loaded extensions, php.ini path, debuggers). Use this to understand the PHP environment before generating code.
2. Identify dependencies and framework
get_composer_dependencies()
This returns all installed packages with exact versions from composer.lock. Use it to determine:
- Framework:
laravel/framework, symfony/framework-bundle, or neither
- Test framework:
phpunit/phpunit, pestphp/pest, codeception/codeception
- Static analysis:
phpstan/phpstan, vimeo/psalm
- Code style:
friendsofphp/php-cs-fixer, squizlabs/php_codesniffer
Use the optional nameFilter glob parameter to search for specific packages (e.g., nameFilter: "laravel/*").
3. Route to framework-specific guidance
| Dependency |
Project Type |
Reference |
laravel/framework |
Laravel |
See references/framework-laravel.md |
symfony/framework-bundle |
Symfony |
See references/framework-symfony.md |
| Neither |
Generic PHP |
See references/php-standards.md |
PhpStorm MCP Tools Quick Reference
Code Analysis
| Tool |
When to Use |
get_inspections |
After edits, for code review, to find problems with available quick fixes |
apply_quick_fix |
To resolve inspection problems automatically |
get_file_problems |
Quick error/warning check on any file type (no quick fixes returned) |
build_project |
Trigger project build and get compilation errors |
Code Search
| Tool |
When to Use |
search_structural |
To find code patterns semantically using SSR (requires fileType: "PHP") |
get_structural_patterns |
To discover predefined PHP search patterns by category |
search_text |
Fast text substring search across project files |
search_regex |
Regex search across project files with match coordinates |
search_symbol |
Semantic symbol lookup (classes, methods, fields) |
search_file |
Find files by glob pattern |
find_files_by_name_keyword |
Fast file search by name substring (uses indexes) |
find_files_by_glob |
Find files matching glob pattern recursively |
Code Intelligence
| Tool |
When to Use |
get_symbol_info |
Get Quick Documentation for a symbol at a specific position |
rename_refactoring |
Safely rename a symbol across the entire project |
get_php_project_config |
Get PHP language level, interpreter, extensions, runtime info |
get_composer_dependencies |
Understand project dependencies, framework, and versions |
File Operations
| Tool |
When to Use |
read_file |
Read file with advanced modes (slice, lines, offsets, indentation) |
get_file_text_by_path |
Read full file text by project-relative path |
replace_text_in_file |
Targeted find-and-replace in files |
create_new_file |
Create new files with content |
reformat_file |
Apply IDE code formatting rules |
Execution
| Tool |
When to Use |
get_run_configurations |
List available run/test configurations |
execute_run_configuration |
Run a specific configuration and get results |
execute_terminal_command |
Run shell commands in IDE terminal |
See references/mcp-tools-reference.md for detailed parameters and usage patterns.
Documentation Lookup
When you need documentation beyond what these references provide:
Reference Documents
| Reference |
Content |
references/project-detection.md |
composer.json anatomy, PSR-4 autoloading, directory layouts |
references/php-standards.md |
PER/PSR coding standards, PHP version features, anti-patterns |
references/testing-guide.md |
PHPUnit, Pest, running tests, common mistakes |
references/framework-laravel.md |
Laravel directory structure, Eloquent, artisan, routes |
references/framework-symfony.md |
Symfony directory structure, Doctrine, console, services |
references/static-analysis.md |
PHPStan, Psalm, PHP CS Fixer, PHP CodeSniffer |
references/composer-guide.md |
Composer commands, version constraints, autoloading |
references/mcp-tools-reference.md |
Detailed PhpStorm MCP tool parameters and workflows |
1---2name: php-project-guide3description: Foundational PHP project knowledge for AI agents. Use when working on a PHP project, setting up a PHP development environment, understanding PHP project structure, following PHP coding standards, running PHP tests, using Composer, or when guidance on PHP-specific tools and workflows in PhpStorm is needed.4---56# PHP Project Guide78Foundational knowledge for working effectively on any PHP project in PhpStorm. Provides project detection, coding standards, testing patterns, framework guidance, and MCP tool usage.910## Quick Start: First Interaction with a PHP Project1112Run these steps when encountering a new PHP project for the first time.1314### 1. Detect PHP environment1516```17get_php_project_config()18```1920Returns the configured PHP language level, interpreter details (name, path, local/remote), and runtime information (exact PHP version, loaded extensions, php.ini path, debuggers). Use this to understand the PHP environment before generating code.2122### 2. Identify dependencies and framework2324```25get_composer_dependencies()26```2728This returns all installed packages with exact versions from `composer.lock`. Use it to determine:29- **Framework**: `laravel/framework`, `symfony/framework-bundle`, or neither30- **Test framework**: `phpunit/phpunit`, `pestphp/pest`, `codeception/codeception`31- **Static analysis**: `phpstan/phpstan`, `vimeo/psalm`32- **Code style**: `friendsofphp/php-cs-fixer`, `squizlabs/php_codesniffer`3334Use the optional `nameFilter` glob parameter to search for specific packages (e.g., `nameFilter: "laravel/*"`).3536### 3. Route to framework-specific guidance3738| Dependency | Project Type | Reference |39|------------|-------------|-----------|40| `laravel/framework` | Laravel | See `references/framework-laravel.md` |41| `symfony/framework-bundle` | Symfony | See `references/framework-symfony.md` |42| Neither | Generic PHP | See `references/php-standards.md` |4344## PhpStorm MCP Tools Quick Reference4546### Code Analysis4748| Tool | When to Use |49|------|-------------|50| `get_inspections` | After edits, for code review, to find problems with available quick fixes |51| `apply_quick_fix` | To resolve inspection problems automatically |52| `get_file_problems` | Quick error/warning check on any file type (no quick fixes returned) |53| `build_project` | Trigger project build and get compilation errors |5455### Code Search5657| Tool | When to Use |58|------|-------------|59| `search_structural` | To find code patterns semantically using SSR (requires `fileType: "PHP"`) |60| `get_structural_patterns` | To discover predefined PHP search patterns by category |61| `search_text` | Fast text substring search across project files |62| `search_regex` | Regex search across project files with match coordinates |63| `search_symbol` | Semantic symbol lookup (classes, methods, fields) |64| `search_file` | Find files by glob pattern |65| `find_files_by_name_keyword` | Fast file search by name substring (uses indexes) |66| `find_files_by_glob` | Find files matching glob pattern recursively |6768### Code Intelligence6970| Tool | When to Use |71|------|-------------|72| `get_symbol_info` | Get Quick Documentation for a symbol at a specific position |73| `rename_refactoring` | Safely rename a symbol across the entire project |74| `get_php_project_config` | Get PHP language level, interpreter, extensions, runtime info |75| `get_composer_dependencies` | Understand project dependencies, framework, and versions |7677### File Operations7879| Tool | When to Use |80|------|-------------|81| `read_file` | Read file with advanced modes (slice, lines, offsets, indentation) |82| `get_file_text_by_path` | Read full file text by project-relative path |83| `replace_text_in_file` | Targeted find-and-replace in files |84| `create_new_file` | Create new files with content |85| `reformat_file` | Apply IDE code formatting rules |8687### Execution8889| Tool | When to Use |90|------|-------------|91| `get_run_configurations` | List available run/test configurations |92| `execute_run_configuration` | Run a specific configuration and get results |93| `execute_terminal_command` | Run shell commands in IDE terminal |9495See `references/mcp-tools-reference.md` for detailed parameters and usage patterns.9697## Documentation Lookup9899When you need documentation beyond what these references provide:100101- **Context7 MCP**: Use `resolve-library-id` then `query-docs` for any PHP framework or library — returns up-to-date docs and code examples102- **PHP official docs**: https://www.php.net/manual103- **PhpStorm help**: https://www.jetbrains.com/help/phpstorm/104- **phpstorm-stubs**: https://github.com/JetBrains/phpstorm-stubs — PHP built-in function signatures and type info105106## Reference Documents107108| Reference | Content |109|-----------|---------|110| `references/project-detection.md` | composer.json anatomy, PSR-4 autoloading, directory layouts |111| `references/php-standards.md` | PER/PSR coding standards, PHP version features, anti-patterns |112| `references/testing-guide.md` | PHPUnit, Pest, running tests, common mistakes |113| `references/framework-laravel.md` | Laravel directory structure, Eloquent, artisan, routes |114| `references/framework-symfony.md` | Symfony directory structure, Doctrine, console, services |115| `references/static-analysis.md` | PHPStan, Psalm, PHP CS Fixer, PHP CodeSniffer |116| `references/composer-guide.md` | Composer commands, version constraints, autoloading |117| `references/mcp-tools-reference.md` | Detailed PhpStorm MCP tool parameters and workflows |