phpstan/phpstan-nette
PHPStan extension for Nette Framework. Improves type inference for components, DI container, forms, presenters/sessions, Html dynamic methods, SmartObject magic properties, events, and regex-based Strings utilities. Includes optional Nette-specific rules.
This extension provides following features:
Nette\ComponentModel\Container::getComponent() knows type of the component because it reads the return type on createComponent* (this works best in presenters and controls)$component['name']) resolves types via createComponent* methodsNette\DI\Container::getByType and createInstance return type based on first parameter (Foo::class).Nette\Forms\Container::getValues return type based on $asArray parameter.Nette\Forms\Container::getUntrustedValues return type based on mapping class parameter.Nette\Forms\Controls\BaseControl fluent methods return static instead of BaseControl.Nette\ComponentModel\Component::lookup return type based on $throw parameter.Nette\Application\UI\Component::getPresenter return type based on $throw parameter.Nette\Application\UI\Presenter::getSession returns Session or SessionSection based on arguments.on* properties@inject properties are treated as initialized.Undefined variable errorsNette\Utils\Strings::match() and Nette\Utils\Strings::matchAll() based on patternNette\Utils\Strings::replace() callback closure parameter type inferred from regex patternIt also contains these framework-specific rules (can be enabled separately):
AbortException)Nette\Utils\Strings methodsTo use this extension, require it in Composer:
composer require --dev phpstan/phpstan-nette
If you also install phpstan/extension-installer then you're all set!
If you don't want to use phpstan/extension-installer, include extension.neon in your project's PHPStan config:
includes:
- vendor/phpstan/phpstan-nette/extension.neon
To perform framework-specific checks, include also this file:
- vendor/phpstan/phpstan-nette/rules.neon
How can I help you explore Laravel packages today?