2.11. 扩展库
扩展库
PHPStan 的特色是有能力定义和检查类的”魔术(magic)”行为 —— 访问类中未定义但在 __get
和 __set
创建的属性,和使用 __call
调用的方法。
PHPStan 不仅允许为非客观错误或代码里的其他问题编写自定义的规则,也允许人们避免一些微妙的情况或者强制执行他们想要的编码方式。这些自定义规则利用了抽象语法树,额外的类型接口引擎,PHPDoc 解析器和类反射数据。
安装扩展
用户可以安装大量的 PHPStan 扩展来增强静态分析器的能力。很多扩展已经支持 PHPStan 扩展安装器 Composer 插件,因此为了启用一个扩展,在你的 composer.json
文件引入它就足够了:
composer require --dev phpstan/extension-installer && \
composer require --dev phpstan/phpstan-beberlei-assert
如果你不能或不想使用 phpstan 扩展安装器,可以手动在 includes
选项里添加扩展配置文件:
includes:
- vendor/phpstan/phpstan-beberlei-assert/extension.neon
为什么我不想总是使用PHPStan 扩展安装器?
它总是启用拓展提供的所有功能。例如如果你只想使用 phpstan-strict-rules 的某些规则,或者你只想使用 phpstan-doctrine 的
extension.neon
(而不是rules.neon
),你无法使用扩展安装器,只能手动引入所选文件。
官方扩展
查看 phpstan-strict-rules 仓库可以了解 PHPStan 特别严格和偏执的规则。
查看 phpstan-deprecation-rules 可以了解检测弃用类、方法、属性、常量和 trait 的用法规则。
特定框架的扩展
- Doctrine
- PHPUnit
- Symfony Framework
- beberlei/assert
- webmozart/assert
- Mockery
- azjezz/psl
- Nette Framework
- PHP-Parser
- Dibi - Database Abstraction Library
非官方扩展
- Laravel
- Drupal
- WordPress
- Laminas (a.k.a. Zend Framework)
- Phony
- Prophecy
- marc-mabe/php-enum
- myclabs/php-enum
- Yii2
- PhpSpec
- TYPO3
- moneyphp/money
- Nextras ORM
- Sonata
- Magento
- CakePHP
- Safe PHP