This extension provides following features:
- Provides correct return type for
ContainerInterface::get()and::has()methods. - Provides correct return type for
Controller::get()and::has()methods. - Provides correct return type for
Request::getContent()method based on the$asResourceparameter. - Notifies you when you try to get an unregistered service from the container.
- Notifies you when you try to get a private service from the container.
To use this extension, require it in Composer:
composer require --dev phpstan/phpstan-symfonyAnd include extension.neon in your project's PHPStan config:
includes: - vendor/phpstan/phpstan-symfony/extension.neon parameters: symfony: container_xml_path: %rootDir%/../../../var/cache/dev/srcDevDebugProjectContainer.xml # or with Symfony 4.2+ container_xml_path: '%rootDir%/../../../var/cache/dev/srcApp_KernelDevDebugContainer.xml' You have to provide a path to srcDevDebugProjectContainer.xml or similar xml file describing your container.
Sometimes, when you are dealing with optional dependencies, the ::has() methods can cause problems. For example, the following construct would complain that the condition is always either on or off, depending on whether you have the dependency for service installed:
if ($this->has('service')) { // ... }In that case, you can disable the ::has() method return type resolving like this:
parameters: symfony: constant_hassers: false Be aware that it may hide genuine errors in your application.