在 ShipMonk,我们一直追求极致的代码质量。虽然 PHPStan 已经非常强大,但我们仍然发现一些潜在的问题无法被标准规则捕捉到。为了解决这个问题,我们开发了一套自己的 PHPStan 规则,并将其开源,希望能够帮助更多的开发者。
ShipMonk PHPStan Rules 提供了大约 40 个额外的规则,涵盖了各种常见的编码错误和不良实践。例如,它可以帮助你:
- 禁止比较不可比较的类型,避免意外的对象比较。
- 强制使用
match语句处理枚举,确保所有枚举值都被正确处理。 - 禁止在可调用对象中抛出检查型异常,避免潜在的异常处理问题。
- 强制在返回迭代器时指定
$preserve_keys参数,避免数据丢失。 - 禁止在未声明为整数的变量上使用自增/自减运算符,避免类型错误。
- 等等...
安装
使用 Composer 安装 ShipMonk PHPStan Rules 非常简单:
composer require --dev shipmonk/phpstan-rules
然后,你需要将 rules.neon 文件包含到你的 PHPStan 配置文件中:
立即学习“PHP免费学习笔记(深入)”;
# phpstan.neon
includes:
- vendor/shipmonk/phpstan-rules/rules.neon配置
你可以根据自己的需求,轻松地禁用或重新配置任何规则。例如,要禁用 enforceReadonlyPublicProperty 规则,可以这样配置:
1、对ASP内核代码进行DLL封装,从而大大提高了用户的访问速度和安全性;2、采用后台生成HTML网页的格式,使程序访问速度得到进一步的提升;3、用户可发展下级会员并在下级购买商品时获得差额利润;4、全新模板选择功能;5、后台增加磁盘绑定功能;6、后台增加库存查询功能;7、后台增加财务统计功能;8、后台面值类型批量设定;9、后台财务曲线报表显示;10、完善订单功能;11、对所有传输的字符串进行安全
parameters:
shipmonkRules:
enforceReadonlyPublicProperty:
enabled: false或者,你可以禁用所有规则,然后只启用你需要的规则:
parameters:
shipmonkRules:
enableAllRules: false
allowComparingOnlyComparableTypes:
enabled: true示例:allowComparingOnlyComparableTypes 规则
这个规则禁止使用比较运算符(>, =, )比较 int|string|float|DateTimeInterface 以外的类型,或者包含可比较类型的相同大小的元组。它主要针对意外的对象、枚举或数组比较,这些比较在 PHP 中是有效的,但往往会产生意想不到的结果。
function example1(Money $fee1, Money $fee2) {
if ($fee1 > $fee2) {} // 比较对象是被禁止的
}
new DateTime() > '2040-01-02'; // 比较不同类型是被禁止的
200 > '1e2'; // 比较不同类型是被禁止的优势与实际应用
ShipMonk PHPStan Rules 的主要优势在于:
- 提高代码质量: 通过更严格的类型检查和代码规范,减少潜在的错误。
- 减少运行时错误: 在开发阶段发现并修复错误,避免在生产环境中出现问题。
- 提高开发效率: 通过自动化代码审查,减少手动检查的时间。
- 促进代码一致性: 强制执行统一的代码风格,提高代码可读性和可维护性。
在实际应用中,ShipMonk PHPStan Rules 可以帮助你构建更健壮、更可靠的 PHP 应用程序。它可以应用于各种类型的项目,无论是小型个人项目还是大型企业级应用。通过持续集成和自动化代码审查,可以确保代码质量始终保持在高水平。
总而言之,ShipMonk PHPStan Rules 是一套非常有价值的 PHPStan 规则,可以帮助你显著提升代码质量,减少运行时错误,并提高开发效率。如果你追求卓越的代码质量,那么 ShipMonk PHPStan Rules 绝对值得一试。









