PHP 8 Undefined array key "age" 如何兼容旧项目?

AI摘要
【知识分享】针对PHP8中变量严格取值导致的旧项目兼容问题,提出处理大量类似`$json['age']`未使用isset检查的代码升级方案,指出直接添加isset工作量巨大,寻求更高效的兼容升级方法。

变量严格取值, php8还增加了警告, 可旧项目代码, 写了无数的 $json[‘age’]
这可如何兼容升级任务?

加isset工作量巨大.

核心优势, php
讨论数量: 26
ShiKi

这种需求清晰的很好修改,使用 AI 分分钟帮你改好了。

1周前 评论

之前关注过一个项目 github.com/rectorphp/rector ,但是没有实操经验,可以试试。

1周前 评论
tuesdays (楼主) 2天前

用$age = $json [‘age’]??"",后面直接加个

1周前 评论
tuesdays (楼主) 1周前
cighsen02 1周前
tuesdays (楼主) 1周前

屏蔽警告信息,或者注册自定义异常处理set_error_handler,然后监听异常是否是Undefined xxx,直接返回true,忽略警告

1周前 评论

屏蔽警告是简单事儿, 但这类变量当参数时,
fun($json[‘age’]) 或者是类参数时, 本质我们期待进入的是字符” “ 空, 现在却成了类型null. 全线报错啊..
这种怎么兼容? 不可能重写所有函数方法吧?

1周前 评论
Imuyu 1周前
tuesdays (作者) (楼主) 1周前
yangweijie

$json['age']?? 18 取的时候给默认值, 得先考虑清除了 为什么会没有 是整个$json 为空 还是只是兜底。不行考虑对接dto

1周前 评论
tuesdays (楼主) 1周前
yangweijie (作者) 1周前
tuesdays (楼主) 3天前

粗糙框架,凡是数组,不确定有没有的,一律使用自定义函数

file

laravel框架可以用Arr类库

1周前 评论
tuesdays (楼主) 1周前

if($tplcache[‘cache’]??’’)
// 每一次使用变量都必加 ??’’ php在歪路走得越来越远!!!

1周前 评论
yangweijie 1周前
Imuyu 1周前
yangweijie 6天前

现在的问题来了, 写好的代码, 要不不兼容php8 要不不兼容php5, 这可真复杂了. 代码得写两份?

3天前 评论
yangweijie 14小时前

$str = ‘123’;
$_GET[$str] = ‘test’;

这个时候的数组key是什么类型? 注意, 一直用的字符串.

2天前 评论
yangweijie 14小时前
yangweijie 14小时前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!