𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2024-9-11 13:04:50

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

趁帝国8.0还没有发布,说说帝国那些老掉牙的代码。主要集中到编码处理e/class/doiconv.php这个文件。基本需要大改。首先看个片段。$this->unicode_table = array();                while(list($key,$value)=each($tmp))                {                        $this->unicode_table=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就可以了,代码如下:

$this->unicode_table = array();                              foreach($tmp as $key=>$value)                        {                        $this->unicode_table=substr($value,0,6);                }实际帝国存在这片段的代码还有很多处的就不一一讲解了,另外帝国函数命名不规范(必需参数与可选参数顺序),数组键名不带单引号(PHP8+会直接终止运行的)等。说直接点要想帝国7.5UTF支持现在的PHP8+也就是需要把帝国以往的所有文件全部去修改一遍。因为帝国的数组键名都是没有带单引号的。顺便告诉个好消息,就算帝国8.0发布后,只要你有二次开发基本也需要全部修改您的二开代码。因为二开的作者大都是偷懒也没有注意这些兼容细节的。谨此提供需要的老坛们,望看见此贴的有二开帝国的站长重视下代码的规范写法。

TyCoding 发表于 2024-9-11 13:05:00

小编也就目前修改了大部分文件让其支持PHP8+能登陆后台能进行后台操作(主要还是太懒)。主要还是规范插件的写法,让帝国8发布后能让升级变得更快捷更轻松。

浅生 发表于 2024-9-11 13:05:28

起码80%的人不知道你写的啥!

浅生 发表于 2024-9-11 13:06:04

难怪阅读与评论都很少!原来是这个原因么?

独家记忆 发表于 2024-9-11 13:06:37

可以反映给帝国官方

婷姐 发表于 2024-9-11 13:07:29

我也看不懂
页: [1]
查看完整版本: 趁帝国8.0还没有发布,说说帝国那些老掉牙的代码

创宇盾启航版免费网站防御网站加速服务