dpanta94/phpstan-containers

PHPStan extensions for Containers

Installs: 56

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:phpstan-extension

pkg:composer/dpanta94/phpstan-containers

0.1.0 2025-12-11 12:53 UTC

This package is auto-updated.

Last update: 2025-12-11 12:55:27 UTC


README

PHPStan

PHPStan extensions for dependency injection containers. Provides dynamic return type resolution so PHPStan understands that $container->get(Foo::class) returns Foo.

Supported Containers

Requirements

  • PHP 7.4 or higher
  • PHPStan 2.0 or higher

Installation

composer require --dev dpanta94/phpstan-containers

If you use phpstan/extension-installer, you're all set!

Manual Installation

If you don't use the extension installer, add the extension to your phpstan.neon:

includes:
    - vendor/dpanta94/phpstan-containers/extension.neon

Usage

Once installed, PHPStan will automatically understand container return types:

use Psr\Container\ContainerInterface;

class MyService {
    public function __construct(private ContainerInterface $container) {}

    public function doSomething(): void {
        // PHPStan knows $logger is an instance of Logger
        $logger = $this->container->get(Logger::class);
        $logger->info('Hello world');

        // PHPStan knows $mailer is an instance of MailerInterface
        $mailer = $this->container->get(MailerInterface::class);
        $mailer->send($message);
    }
}

The extension resolves types when:

  • The argument to get() is a class-string constant (e.g., Foo::class)
  • The class or interface exists in the codebase

When using string service IDs (e.g., $container->get('mailer')), the extension falls back to the default mixed return type.

License

MIT

Credits

This package is inspired by Phil Nelson's phpstan-container-extension.