mirror of
https://github.com/danog/psalm-plugin-symfony.git
synced 2024-11-30 04:29:10 +01:00
d2f0447add
* add class to codebase if service is used by id * fix doc |
||
---|---|---|
src | ||
tests | ||
.gitignore | ||
.php_cs.dist | ||
.travis.yml | ||
codeception.yml | ||
composer.json | ||
LICENSE | ||
phpunit.xml | ||
psalm.xml | ||
README.md |
Symfony Psalm Plugin
Installation
composer require --dev seferov/symfony-psalm-plugin
vendor/bin/psalm-plugin enable seferov/symfony-psalm-plugin
Features
- Detect
ContainerInterface::get()
result type. Works better if you configure compiled container XML file. - Fixes
PossiblyInvalidArgument
forSymfony\Component\HttpFoundation\Request::getContent
. The plugin calculates real return type by checking the given argument and marks return type as either string or resource. - Complains when
Container
is injected to a service. Use dependency-injection.
Configuration
If you followed installation instructions, psalm-plugin command would added plugin configuration to psalm.xml
<?xml version="1.0"?>
<psalm totallyTyped="true">
<!-- project configuration -->
<plugins>
<pluginClass class="Seferov\SymfonyPsalmPlugin\Plugin" />
</plugins>
</psalm>
To be able to detect return types of services using ID (generally starts with @
in Symfony YAML config files. Ex: logger
service)
containerXml
must be provided. Example:
<pluginClass class="Seferov\SymfonyPsalmPlugin\Plugin">
<containerXml>var/cache/dev/App_KernelDevDebugContainer.xml</containerXml>
</pluginClass>
This file path may change based on your Symfony version, file structure and environment settings. Default file for Symfony versions:
- Symfony 3: var/cache/dev/srcDevDebugProjectContainer.xml
- Symfony 4: var/cache/dev/srcApp_KernelDevDebugContainer.xml
- Symfony 5: var/cache/dev/App_KernelDevDebugContainer.xml