syntro / silverstripe-phpstan
PHPStan for Silverstripe
Installs: 31 086
Dependents: 25
Suggesters: 0
Security: 0
Stars: 6
Watchers: 1
Forks: 8
Open Issues: 13
Requires
- php: ~8.0
- phpstan/phpstan: ^1.5
- silverstripe/cms: ^5.0
- silverstripe/framework: ~5.0
- silverstripe/versioned: ^2.0
Requires (Dev)
- phpstan/phpstan-phpunit: ^1
- phpunit/phpunit: ^9.4
- squizlabs/php_codesniffer: ^3.0
README
A module allowing PHPStan to work with Silverstripe.
Features:
- Support for
DataObject::get()
, ie. it understands you have a DataList of iterable SiteTree records. - Support for DataObject
db
,has_one
,has_many
andmany_many
magic properties and methods, ie. it knows SiteTree::Title is a string, that SiteTree::ParentID is an integer and that SiteTree::Parent() is a SiteTree record. - Support for
singleton('SiteTree')
andInjector::inst()->get('SiteTree')
, ie. it knows these will return "SiteTree". If you override these with the injector, it'll also know what class you're actually using. - Support for config properties
This PHPStan module is able to reason about extensions installed specific to your project as it bootstraps the SilverStripe config system. So if you've added an extension to your Page
object that adds an additional db
field, PHPStan will be able to reason about it.
Composer Install
SilverStripe 5.X
composer require --dev syntro/silverstripe-phpstan ^5
For Silverstripe 4, see the corresponding branch.
Requirements
- SilverStripe 5.0+
Documentation
Known Limitations / Gotchas
- PHPStan checks if properties are actually initialized, read and written. This
however does not apply to Silverstripes configuration properties.
In order to tell PHPStan which of your properties are configuration values, you have
to use the
@config
docblock. - The type of the
owner
property can't be reasoned about for extensions. You must usegetOwner()
. Related Issues: #1043 and #1044
Credits
This is a fork of the original symbiote/silverstripe-phpstan
maintained by
Symbiote & Contributors.
We have created this, as the original repository seems to be no longer actively
maintained.