league / tactician-phpstan
查找缺失的处理程序、错误的类型提示等。
Requires
- php: >=7.2
- league/tactician: dev-master@dev
- phpstan/phpstan: ^0.11.12
Requires (Dev)
- phpstan/extension-installer: ^1.0
- phpstan/phpstan-phpunit: ^0.11.2
- phpunit/phpunit: ^8.2
- squizlabs/php_codesniffer: ^3.4
This package is auto-updated.
Last update: 2024-09-19 16:53:42 UTC
README
对 一个轻量级、灵活的命令总线 进行静态分析。
传统上,命令总线可能会掩盖静态分析。Tactician PHPStan 插件通过查找缺失的处理程序类、验证处理程序返回类型等方式,帮助实现更强的类型检查。
安装
使用 Composer
composer require --dev league/tactician-phpstan
注册插件
如果您还安装了 phpstan/extension-installer,那么您已经设置好了!
手动安装
如果您不想使用 phpstan/extension-installer
,请将 extension.neon 包含到您的项目 PHPStan 配置中
includes: - vendor/league/tactician-phpstan/extension.neon
配置
您需要使您的 CommandToHandlerMapping
对 PHPStan 可用。最简单的方法是创建一个小的引导文件,该文件返回您在应用程序中使用相同的处理程序配置。
这个版本的简单示例可能如下所示
# handler-mapper-loader.php <?php require_once __DIR__.'/vendor/autoload.php'; use League\Tactician\Handler\Mapping\ClassName\Suffix; use League\Tactician\Handler\Mapping\MapByNamingConvention; use League\Tactician\Handler\Mapping\MethodName\Handle; return new MapByNamingConvention( new Suffix('Handler'), new Handle() );
您可以使用您的引导文件、依赖注入容器或其他任何您喜欢的东西,您只需要返回一个 CommandToHandlerMapping
。
现在在您的 phpstan.neon
配置中公开引导文件。
# phpstan.neon parameters: tactician: bootstrap: handler-mapping-loader.php
然后您就可以出发了!
使用不同的命令总线类
在应用程序中,通常会有从应用程序到任何外部包(包括 Tactician)的桥梁接口。在这种情况下,您将有一个不同的命令总线类,Tactician-PHPStan 不会捕获错误,因为它正在寻找对 League\Tactician\CommandBus
的使用。
相反,您可以配置命令总线类以扫描,以及(可选地)使用的方法
# phpstan.neon parameters: tactician: bootstrap: handler-mapping-loader.php class: My\App\CommandBus method: execute
如果没有指定任何内容,默认类是 League\Tactician\CommandBus
,方法名为 handle
。
测试
要运行所有单元测试,请使用本地安装的 PHPUnit
./vendor/bin/phpunit
安全
Tactician 没有先前的安全披露,由于项目的性质,也不太可能。但是,如果您担心在 Tactician 或其相关项目中发现了安全敏感的问题,请通过电子邮件向 disclosures [at] rosstuck dot com 报告。
贡献
有关详细信息,请参阅 CONTRIBUTING