在此强烈感谢 @popcorner 等开发者参加对此功能的讨论。

描述此 Pull Request 的变更

新增 discuz_request 类,供开发者快速安全调用外来参数

描述变更理由

根据后续开发计划,将考虑逐步去除对 $_GET 数组同时包含 $_POST 数组的功能,大量目前使用的 $_GET 数组需要替换为符合来源数据类型的取值方式。同时考虑到 PHP 8 兼容会对不存在变量抛异常,因此也需要一个合适的处理方式处理相关异常。同时考虑到目前的 getgpc() 函数因为默认合并了 $_GET$_POST 数组而不再主推,因此新增一个便于使用的方式是必要的。

考虑到此,在保留 $_GET$_POST 数组功能的同时,参考主流 PHP 框架代码实践,从而新增 discuz_request 类( R 类)可以降低开发成本并降低出现异常的可能。

具体使用方法如下:

GET: $ultarx = R::g('ultarx');
POST: $ultarx = R::p('ultarx');
GET + POST: $ultarx = R::gp('ultarx');

对不向前兼容或涉及安全性变更的特殊说明

X3.5 版本上由于默认进行数组合并,因此 R::g 会取到 $_POST 的值,请不要依赖此行为。

关联 Issue