PHP8 大家怎样修复 notice 变成 warning 的错误?

2022-05-09 13:20:21 +08:00
 Felldeadbird

最近打算升级到 PHP8 ,发现程序好多地方报 warning 了。官方搜索了一下,大概就是以前是 notice 升级了。

A number of notices have been converted into warnings:

Attempting to read an undefined variable. Attempting to read an undefined property. Attempting to read an undefined array key.

好多地方要进行变量判断。有点不想干了。v😂

2098 次点击
所在节点    PHP
12 条回复
Rache1
2022-05-09 13:32:16 +08:00
😄 8.2 还通过了一个新的 RFC ,遗弃了对象的动态属性,还是趁早改代码吧。

PHP: rfc:deprecate_dynamic_properties
https://wiki.php.net/rfc/deprecate_dynamic_properties
Felldeadbird
2022-05-09 13:55:25 +08:00
@Rache1 哎呀,这改动有点激进啊。

今天一个早上在改这些警告判断。找到一个和我差不多痛苦的人 https://stackoverflow.com/questions/71025115/dealing-with-php-8-1-warning-for-undefined-array-key
Rache1
2022-05-09 14:05:53 +08:00
leo108
2022-05-09 14:08:49 +08:00
phpcs & phpstan 从根源上解君愁
encro
2022-05-09 14:39:21 +08:00
聪明的你,
将 warning 错误再禁止呗,
就如你当初禁止 notice 错误一样。
lslqtz
2022-05-09 14:43:10 +08:00
你就不能再加一个 isset 么……
encro
2022-05-09 14:43:52 +08:00
或者,
你可以学习下正则,
批量查找替换下。


replace `if($_GET['e'] == 1)` to `if(isset($_GET['e']) && $_GET['e'] == 1)`

大概 10 年前,就不用楼主这种写法了。。。,开发模式开启 notice 错误,是标配。
mrgeneral
2022-05-09 14:45:07 +08:00
所以暂时将你眼睛闭了起来

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING

display_errors = Off
Felldeadbird
2022-05-09 15:10:10 +08:00
@lslqtz 有一些业务判断,加多一个 isset 太长了。 例如 if($a){} 这样我就可以知道$a 存在就执行里面的方法。


@encro
@mrgeneral 禁用 notice 是因为 这个项目写的时候,5.X 时代大部分都这样操作。到了 PHP7 也没太多怎么样变化。最近要准备升级到 PHP8 。。。。
encro
2022-05-09 16:12:05 +08:00
从 5.3 时代开始,
我就是没有启用 NOTICE 提示的库不用,
开发模式必须开启 Notice 错误提示,
这样能少很多 debug 时间。
msg7086
2022-05-10 01:02:52 +08:00
我记得我十五年前写的 PHP 代码就已经全用 isset 检测了。是我穿越了吗?
zengzizhao
2022-05-18 12:06:06 +08:00
$_GET ?? null
这样不优雅?

有一些业务判断,加多一个 isset 太长了
代码逻辑正确是首要的,加一个 isset 太长了,这也能当理由?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/851720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX