Skip to content

Extend PHPStan (PHP Static Analysis) to support SilverStripe projects

License

Notifications You must be signed in to change notification settings

archiprocode/silverstripe-phpstan

 
 

Repository files navigation

PHPStan for Silverstripe

A module allowing PHPStan to work with Silverstripe.

🎭 Tests codecov Dependabot phpstan composer Packagist Version

Features:

  • Support for DataObject::get(), ie. it understands you have a DataList of iterable SiteTree records.
  • Support for DataObject db, has_one, has_many and many_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') and Injector::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 use getOwner(). 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.

About

Extend PHPStan (PHP Static Analysis) to support SilverStripe projects

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%