如何解决在 PHP 升级到 PHP8 之前识别类型杂耍问题
目前,我使用的是 PHP5.6,很快就会更新到 PHP8。我使用 PHPCS 来检查兼容性问题,并在升级到 PHP8 之前修复了这些问题。
但是,我在测试过程中发现了一些与代码中的类型杂耍相关的问题,例如:
$x = "";
$x['test'] = "xyz";
print_r($x); //Warning: Only the first byte will be assigned to the string offset in /tmp/8dw2cmkrbq0pcq/tester.php on line 4 Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /tmp/8dw2cmkrbq0pcq/tester.php:4 Stack trace: #0 {main} thrown in /tmp/8dw2cmkrbq0pcq/tester.php on line 4
这段代码在 PHP5.6 中运行良好。
不幸的是,PHPCS 没有检测到这个问题,现在我想知道产品中是否还有更多这样的问题。
现在,我想知道在升级到 PHP8 之前是否有办法检测此类问题?如果我能在升级到 PHP8 之前获得有关如何查找此类问题的提示,那将非常有帮助。
解决方法
我能够使用 https://github.com/phan/phan 检测到此类问题。这是捕获的示例问题。
{
"type": "issue","type_id": 10030,"check_name": "PhanTypeMismatchDimAssignment","description": "TypeError PhanTypeMismatchDimAssignment When appending to a value of type '',found an array access index of type 'hobbies',but expected the index to be of type int","severity": 5,"location": {
"path": "PQR/models/XYZModel.php","lines": {
"begin": 171,"end": 171
}
}}
感谢大家的支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。