syntro / silverstripe-phpstan
PHPStan for Silverstripe
5.0.0
2023-06-28 12:55 UTC
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
一个允许PHPStan与Silverstripe一起工作的模块。
功能
- 支持
DataObject::get()
,即它理解你有一个可迭代的SiteTree记录的DataList。 - 支持DataObject的
db
、has_one
、has_many
和many_many
魔术属性和方法,即它知道SiteTree::Title是字符串,SiteTree::ParentID是整数,SiteTree::Parent()是SiteTree记录。 - 支持
singleton('SiteTree')
和Injector::inst()->get('SiteTree')
,即它知道这些将返回"SiteTree"。如果你使用注入器覆盖这些,它也会知道你实际使用的类。 - 支持配置属性
此PHPStan模块能够在启动SilverStripe配置系统时推理出针对你的项目安装的特定扩展。因此,如果你为Page
对象添加了一个添加额外db
字段的扩展,PHPStan将能够对此进行推理。
Composer安装
SilverStripe 5.X
composer require --dev syntro/silverstripe-phpstan ^5
对于Silverstripe 4,请参阅相应的分支。
要求
- SilverStripe 5.0+
文档
已知限制/注意事项
- PHPStan会检查属性是否实际初始化、读取和写入。然而,这并不适用于Silverstripes的配置属性。为了告诉PHPStan你的哪些属性是配置值,你必须使用
@config
文档注释。 - 对于扩展,无法推理出
owner
属性的类型。你必须使用getOwner()
。相关问题:#1043 和 #1044
致谢
这是由Symbiote和贡献者维护的原始symbiote/silverstripe-phpstan
的一个分支。我们创建了它,因为原始存储库似乎不再积极维护。