·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分购买✅卡密充值📒收藏夹🎖️众筹悬赏👽聊天室
返回列表 发布新帖

趁帝国8.0还没有发布,说说帝国那些老掉牙的代码

80 5

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
趁帝国8.0还没有发布,说说帝国那些老掉牙的代码。主要集中到编码处理e/class/doiconv.php这个文件。基本需要大改。首先看个片段。
  1. $this->unicode_table = array();                while(list($key,$value)=each($tmp))                {                        $this->unicode_table[hexdec(substr($value,7,6))]=substr($value,0,6);                }
复制代码
PHP 4.0.0 开始支持 each(),但是从 PHP 7.0.0 开始,each() 函数已被弃用,并且在 PHP 8.0.0 中被移除。想想这是多古老的函数了。别小看这个会影响到帝国自带的全文搜索,支付,增加栏目生成拼音乱码等(php7.3+以上环境)所以帝国7.5建议PHP不能大于7.1是最合适的。

那怎么解决呢,其实很简单的。使用 foreach就可以了,代码如下:
  1. $this->unicode_table = array();                                foreach($tmp as $key=>$value)                        {                        $this->unicode_table[hexdec(substr($value,7,6))]=substr($value,0,6);                }
复制代码
实际帝国存在这片段的代码还有很多处的就不一一讲解了,另外帝国函数命名不规范(必需参数与可选参数顺序),数组键名不带单引号(PHP8+会直接终止运行的)等。说直接点要想帝国7.5UTF支持现在的PHP8+也就是需要把帝国以往的所有文件全部去修改一遍。因为帝国的数组键名都是没有带单引号的。顺便告诉个好消息,就算帝国8.0发布后,只要你有二次开发基本也需要全部修改您的二开代码。因为二开的作者大都是偷懒也没有注意这些兼容细节的。谨此提供需要的老坛们,望看见此贴的有二开帝国的站长重视下代码的规范写法。
我要说一句 收起回复
创宇盾启航版免费网站防御网站加速服务

评论5

TyCodingLv.8 发表于 2024-9-11 13:05:00 | 查看全部
小编也就目前修改了大部分文件让其支持PHP8+能登陆后台能进行后台操作(主要还是太懒)。主要还是规范插件的写法,让帝国8发布后能让升级变得更快捷更轻松。
我要说一句 收起回复
浅生Lv.8 发表于 2024-9-11 13:05:28 | 查看全部
起码80%的人不知道你写的啥!
我要说一句 收起回复
浅生Lv.8 发表于 2024-9-11 13:06:04 | 查看全部
难怪阅读与评论都很少!原来是这个原因么?
我要说一句 收起回复
独家记忆Lv.8 发表于 2024-9-11 13:06:37 | 查看全部
可以反映给帝国官方
我要说一句 收起回复
婷姐Lv.8 发表于 2024-9-11 13:07:29 | 查看全部
我也看不懂
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.133.133.233,GMT+8, 2024-9-29 15:34 , Processed in 0.224733 second(s), 108 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表