jensderond / phpstan-craftcms
CraftCMS extension for PHPStan
1.2.0
2026-05-12 19:09 UTC
Requires
- phpstan/phpstan: ^2.1
Requires (Dev)
- craftcms/cms: ~5
- laravel/pint: ^1.25
This package is auto-updated.
Last update: 2026-05-12 19:23:51 UTC
README
Extension for PHPStan for better support for Craft CMS. The following features are provided:
- Configure autoload of Craft CMS for analysis
- Stubs for
EntryandElementQuery, narrowingEntryQuery::one(),nth()andall()to returnEntry - Dependency injection container support for
Craft::$container->get() - Recognises custom field handles as properties on
ElementandElementQuery, including handle overrides from entry-type field layouts (read from your project config) - Validates the
actionvalue of TwigactionInput()calls against discovered controller routes (including shorthand routes for controller default actions)
Install
Via Composer
$ composer require --dev jensderond/phpstan-craftcms
Usage
Add phpstan-craftcms to the project phpstan.neon / phpstan.neon.dist:
includes: - vendor/jensderond/phpstan-craftcms/extension.neon
Configuration
The extension exposes the following parameters with sensible defaults:
parameters: yii2: config_path: %rootDir%/../../../config/app.php craftcms: projectConfigPath: %currentWorkingDirectory%/config/project craftActionInput: templatePaths: - %currentWorkingDirectory%/templates - %currentWorkingDirectory%/modules - %currentWorkingDirectory%/plugins handleMap: []
yii2.config_path— path to your Yii/Craft application config used to build the service and route maps.craftcms.projectConfigPath— path to the Craft project config directory; used to collect custom field handles and entry-type handle overrides.craftActionInput.templatePaths— directories scanned for TwigactionInput()calls.craftActionInput.handleMap— optional map of additional handle aliases used when resolvingactionInput()values to controllers.