PHP 8 正式版发布,你的 WordPress 环境准备好上了吗?

PHP 8 正式版已经发布,它引入了一些重大变更,以及许多新特性和性能优化,包括命名参数、联合类型、注解、Constructor Property Promotion、match 表达式、nullsafe 运算符、JIT,以及对类型系统、错误处理和一致性的改进。

你的 WordPress 用 PHP 7.4 了吗?虽然目前还不推荐 WordPress 环境上 PHP 8,但是 PHP 7.4 确实不错,这里推荐下,目前对大多数主题插件也都已经兼容了。

PHP 8 正式版发布,你的 WordPress 环境准备好上了吗?

PHP8 新特性 JIT

PHP 8 引入了两个 JIT 编译引擎。跟踪 JIT 是这两种方法中最有前途的一种,它在综合基准测试上的性能提高了大约 3 倍,在某些特定的长时间运行的应用程序上性能提高了 1.5 到 2 倍。典型的应用程序性能与 PHP 7.4 不相上下。

JIT 对 PHP8 性能的影响:

PHP 8 正式版发布,你的 WordPress 环境准备好上了吗?

除此之外,还有一些类型系统和错误处理的改进、其他语法调整和改进以及新的类,接口和功能,详细的可以去 PHP 官网 查看

这里值得一提的是 Opaque objects,用来代替 Curl、Gd、Sockets、OpenSSL、XMLWriter 和 XML 扩展的资源类型。

//PHP7
var_dump(is_resource(curl_init())); // true

//PHP8
var_dump(is_resource(curl_init())); // false
var_dump(is_object(curl_init())); // true

WordPress 慎重选择 PHP 8

WordPress Core 旨在与 5.6 版本中的 PHP 8.0 兼容(当前计划于 2020 年 12 月 8 日发布)。

但是,PHP 8.0 是主要版本更新,其中进行了大量更改,从而破坏了向后兼容性,并且 PHP 7.x 功能版本中不推荐使用的许多功能已被正式删除。

以 DUX 主题为例,PHP 8.0 刚出来就做了测试,但 WordPress 核心的报错和提示就是一堆,只有等WordPress 5.6甚至更后面的版本彻底的支持 PHP 8 后,才能完美适配 PHP 8.0。

但是,这并不意味着在发布 WordPress 5.6 时可以安全地升级到 PHP 8。WordPress 很少单独运行,通常至少依赖一个主题和一组插件来支撑博客或网站。因此,他指出:“无法知道更广泛的生态系统(插件、主题等)对 PHP 8 的支持状态。因此,WordPress 5.6 应该被认为与 PHP 8 是“ beta 兼容”的。“

从本质上讲,这意味着,直到大多数主要主题和插件都与 PHP 8 兼容,WordPress 才被视为完全兼容。

所以说,选择一个好的主题和插件是有必要的,他们开发团队能够尽快更新兼容上去。

对开发人员影响

不断更新到最新版本的PHP并解决每个功能版本问题的站点通常在更新到新的主要版本时不太可能遇到问题。

PHP 8 中的新功能与 PHP 7 或 PHP 5 不兼容,通常会导致致命错误。

强烈建议使插件或主题与 PHP 8 兼容,但建议不要在分布式插件和主题中使用 PHP 8 中添加的功能,除非在主文件(插件)或文件(主题)的标题部分中将其 Requires PHP 设置为8.0style.css

命名参数和 WordPress

命名参数功能为所有以后的 PHP 代码引入了重要的向后兼容性考虑。引入此功能后,参数名称将成为API合同的一部分,并且在未来的 WordPress 版本中对其名称的任何更改都将破坏向后兼容性,从而在代码使用过时的参数名称调用函数时导致致命错误。

已建议对整个 WordPress Core 的功能签名进行积极审查,以确保所有参数名称都是描述性的,准确的,并且不使用保留关键字以避免任何潜在的混淆,但这不会成为 WordPress 5.6 的一部分。

在完成此审核之前,明确不支持在调用 WordPress 函数和类方法时使用命名参数,并且强烈建议不要使用命名参数,因为在审核期间,参数名称如有更改,恕不另行通知。审核完成后,它将在以后的开发人员说明中宣布。

如果在此之前选择使用 WordPress Core 函数和类时选择使用命名参数,则后果自负。

此外,PHP Core 一直在期待自己的参数名称,因为预期将发布 PHP 8。由于尚未更新 PHP 文档以反映 PHP 8 的更改,因此文档中当前详细说明的某些参数名称也可能会更改。

要关注或对此评论做出贡献,请参阅 Trac 上的#51553#50531

测试工具相关

因为WordPress支持PHP 5.6.20或更高版本,所以在PHP 8上运行WordPress Core PHPUnit测试套件并不容易。

  • PHPUnit> = 9.3 是当前唯一支持 PHP 8 的 PHP Unit 版本。
  • PHPunit 5.7.x 是最后一个支持 PHP 5.6 的版本。
  • PHPUnit 8.x 更改了一些不返回值的方法来指定 void 返回类型声明。但是,此返回类型在 PHP <7.1 中不可用。

为了保持在PHP 5.6上运行测试套件的能力,同时还允许测试在PHP 8上运行,需要对PHPUnit所做的更改已回移植到WordPress Core测试套件中,并且Composer用于操纵PHPUnit的自动加载过程7.x。

要在PHP 8上运行WordPress Core PHPUnit测试套件,需要使用Composer进行安装和运行。

为了简化操作,添加了一个新的NPM脚本,以使用Composer安装的PHPUnit版本在本地Docker环境中运行测试套件。

// Run within the local Docker container using version of
// PHPUnit installed within the container.
npm run test:php
 
// Run within the local Docker container using version of
// PHPUnit installed via Composer.
npm run test:php-composer

有关此新命令的更多信息,请参见#51456。有关使用PHP 8 / PHPUnit的> = 8测试套件兼容的更多信息,请参见#46149#50902#50913

原创文章,作者:陌涛,如若转载,请注明出处:https://imotao.com/4344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
陌涛陌涛
上一篇 2020年12月2日 上午9:32
下一篇 2020年12月4日 下午9:58

相关推荐

  • 禁用WordPress Gutenberg古腾堡编辑器两个方法

    前几天,我们如果有在使用WordPress的网友肯定看到5.0版本是强制更新使用Gutenberg古腾堡编辑器的。有不少的网友反馈确实是比较难用,主要是与以往的编辑习惯不同。陌涛个…

    2019年8月19日
    00
  • WordPress纯代码实现自助申请友链功能

    1、在你wp博客主题的目录下新建一个名为blinks.php的文件; 2、复制以下代码至blinks.php中: // 表单项数据验证 if ( empty($link_name)…

    2019年8月22日
    00
  • 解决网站被利用xmlrpc.php文件攻击的方法

    用Wordpres程序的朋友应该都知道xmlrpc.php文件,它是我们客户端远程管理编辑网站、小程序等需使用的接口文件,但很多不良人士会利用xmlrpc.php文件来绕过Word…

    2022年5月12日
    00
  • WordPress技巧:自定义默认上传路径

    方法一、全局选项 其实wordpress还隐藏着一个“全局选项”,登录后台后,在地址栏输入“http://你的域名/wp-admin/options.php”,即可打开这个神秘的“…

    2020年6月11日
    00
  • WordPress评论防止游客冒充站长回复别人

    WordPress自带的评论一直存在一个问题,不知道各位发现没有,那就是普通游客也可以使用站长的名字和邮箱对别人进行回复。这样就让某些人有机可乘,乱发广告,乱回复等问题。为了避免该…

    2019年8月22日
    00
  • WordPress 发布了独立的 SQLite 插件

    之前 WordPress 在官方的 Performance Lab 插件实现 SQLite 模块,现在重构 SQLite 的实现,并且将其发布成一个独立的插件:SQLite Dat…

    2023年5月7日
    00
  • WordPress修改文件上传大小

    于Wordpress修改媒体文件的上传大小 在网站服务器端的PHP设置中,进行相关修改。 方法一(推荐): 在functions.php中添加如下代码,这样上传限制就是64M @i…

    2019年10月17日
    00
  • 批量替换WordPress文章中的文字

    如果准备替换修改散布在大量WordPress文章中的相同文字,手动编辑文章修改工作量大,可以用下面的代码实现批量替换,会用到WordPress的操作数据常量$wpdb修改数据库,不…

    2021年7月29日
    00
  • WordPress主题CorePress

    主题介绍 主题叫做CorePress,是一款多功能的WordPress主题,可以当博客使用,也可以做成CMS站点。 无框架设计 站长手撸前台界面,无任何前端界面框架,加载更迅速。 …

    2021年1月14日
    00
  • 知更鸟主题修改CSS:让凌乱的标签变得整洁清爽

    知更鸟主题自带了两种风格的标签风格,3D动态,和彩色静态风格。额,恕我直言,3D动态标签风格有浓浓的土腥味,一副油腻大叔的赶脚。 彩色静态风格标签,也是排序的很凌乱,作为有强迫症的…

    2020年8月19日
    00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

docker镜像已更新为 https://0-docker.nat.tf/