PHP 8.3通过引入Just-in-Time(JIT)编译器和新语法特性如new static()和match表达式,显著提升了执行速度和代码的简洁性,为开发高性能、高并发的Web应用程序带来了重大意义。

我上一个主题一直使用的是PHP8.3,但更换主题后因为适配问题,所以还是沿用的php7.4。因为PHP8.3对于非专业作业人员来讲,其提升的性能和好处肉眼不可见,但作为一个喜欢折腾的我来说,有更好的,自然想升升级。

不过,主题带来的不适配问题,也是一个大麻烦,开启后会出现如下错误:

请输入图片描述

请输入图片描述

都是引用文件里面的参数引起的错误,都是一些调用代码的变量问题。如图要么是评论变量,要么是归类变量,也不知道对不对,反正就是那么个意思。最开始,我想出的解决方案是整个主题去适配PHP8.3版本,那么这就需要主题添加php版本检查代码,搜了一下百度,大概是引用

<?php
if (version_compare(PHP_VERSION, '8.3', '>=')) {
    // PHP版本大于或等于8.3的代码
} else {
    // 旧版本的PHP代码
}

但有一个难题,如果在function.php里面添加了这个检查代码,就必须要在合适的地方进行调用,想想有点繁琐。那么有没有很简单的方法解决呢?

还真有,通过AI的帮助,可以在错误的代码处添加错误处理的方法。
例如 $modified = $random->modified; 这个错误就可以使用:

if (isset($random) && isset($random->modified)) {
    $modified = $random->modified;
} else {
    // 处理错误或提供默认值
    $modified = null; // 或者一个合理的默认值
}

那么一一排查,首页 $comment = spam_protection_pre($comment, $post, $result); 出现的错误即可使用

    if (isset($comment, $post, $result)) {
    $comment = spam_protection_pre($comment, $post, $result);
} else {
    // 处理错误情况,例如记录错误或设置默认值
}

果然,添加后完美解决。本来先去问了作者的,但是作者近期比较忙,也没有短时间的适配计划,所以自己动手丰衣足食吧。这种方法应该可以适配别的因为PHP版本升级带来的适配问题。

已有 17 条评论

  1. like5588 like5588

    185371770 可以加我微信么?讨论这个PHP8.3

  2. 我不敢升级,就怕出问题。新主题看着很舒服。

    1. 你是Rizhi主题的话,先别升级,没做适配,有些插件也不适配。我用默认模板改的,Rizhi主题折腾了后感觉差了点意思,哈哈

  3. Debian 官方仓库还是 PHP8.2,我再等等。

    1. php7.4很稳定,如果不是非必要,也没啥可升级的。

  4. 看来PHP版本是能稳定就尽量别升级,等插件等配套跟上来了再慢慢升,以前还以为能升就快点升呢。

    1. 最稳定就用7.4版本,我是不行,我有强迫症,能最新就最新。

  5. 如果不是程序版本不升级不安全,我连程序都不想升级,好多好用的插件升级了就不能用了。

    1. 我现在基本上能不用的插件全部都关闭,只保留备份再,偶尔救急用。

添加新评论