# Symfony Psalm Plugin [![Build Status](https://travis-ci.com/seferov/symfony-psalm-plugin.svg?branch=master)](https://travis-ci.com/seferov/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](#configuration) compiled container XML file. - Fixes `PossiblyInvalidArgument` for `Symfony\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 ``` 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: ```xml var/cache/dev/App_KernelDevDebugContainer.xml ``` 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 ### Credits - [@weirdan](https://github.com/weirdan) for [codeception psalm module](https://github.com/weirdan/codeception-psalm-module)