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)
Via Composer
$ composer require --dev jensderond/phpstan-craftcmsAdd phpstan-craftcms to the project phpstan.neon / phpstan.neon.dist:
includes:
- vendor/jensderond/phpstan-craftcms/extension.neonThe 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.