现在大多数 WordPress 插件和主题开发人员不太可能在近一段时间内使用刚出的新 PHP 7.4 功能,除非有特殊要求的需要。由于 WordPress 不太会将最低 PHP 版本提高到最新的受支持版本,因此使用新功能可能还需要几年的时间。
但是,WordPress 开发人员应确保其插件和主题与 PHP 7.4 兼容。保持产品跟上环境新功能也是一种很好的做法。
如今 WordPress 5.2 将最低要求提高到 PHP 5.6,并推荐使用 PHP 7.3。以下是 WordPress 安装的当前 PHP 使用情况统计信息的情况:
- PHP 7.3 – 9.6%
- PHP 7.2 – 22.2%
- PHP 7.1 – 13.5%
- PHP 7.0 – 14.9%
- PHP 5.6 – 25.7%
当前,PHP 7.2 和 7.3 是唯一获得有效支持的版本。PHP 将在 12月1日停止对 7.1版的安全支持。
PHP 7.4 新功能
PHP 7.4 包含许多新功能,这些新功能将使编写代码更加容易。以下是对 WordPress插件和主题作者可能有用的一些功能的简要概述。
类型属性
PHP 在 5.0中首次引入了类型提示,并不断改进该功能。PHP 7.0 引入了返回类型声明。PHP 7.4 使它更上一层楼,并允许开发人员为类属性声明类型。这使开发人员可以确保分配给特定属性的数据类型始终是该数据类型。
在下面的示例中,$id属性只能分配一个整数,而 $title属性只能分配一个字符串。如果声明了严格的类型,尝试分配错误的数据类型将导致致命错误。否则,PHP 会将值强制转换为正确的类型。
- class Event {
- public int $id;
- public string $title;
- }
箭头功能
许多开发人员一直在呼吁使用类似于 JavaScript 的箭头功能。它们非常好用。但是,PHP 的箭头功能(也称为“短闭包”)略有不同。PHP 7.4 引入了 fn关键字(现在是保留关键字)。短闭包只能包含一个表达式,没有 return关键字。它们的功能不如 JavaScript 下的强大,但是它们确实为某些情况提供了快速的解决方案。
例如,以下代码片段显示了两种不同的方法,这些方法可以根据一组用户对象构建一组用户电子邮件。
- // 还可使用的旧方法
- $value = array_map( function( $user ) {
- return $user->user_email;
- }, $users );
- // 新方法
- $value = array_map( fn( $user ) => $user->user_email, $users );
在数组内部解包
参数解包是 PHP 5.6 引入的,因此对于 WordPress 领域的许多开发人员来说,这仍然可能是陌生的领域。在我的某些项目中,这是非常宝贵的功能。
PHP 7.4 允许开发人员在数组中解包数组。这应该比 array_merge( ) 散布运算符(...)是一种语言构造而不是一个函数要快得多。
看下下面的示例,该示例在较大的颜色数组中注入两种颜色的数组。
- $colors_a = [ 'green', 'blue' ];
- $colors_b = [ 'red', ...$colors_a, 'yellow', 'purple' ];
- // [ 'red', 'green', 'blue', 'yellow', 'purple' ];
空合并分配运算符
空合并赋值运算符是将 isset( ) 检查与三元运算符组合在一起的简便方法。
以下示例显示了如何检查 $product['id'] 变量。如果已设置,则什么也不做。否则,在右侧分配它的值。您可以看到 PHP 版本之间代码的演变。用 7.4编写要简单得多。
- // Pre-PHP 7.0.
- $product['id'] = isset( $product['id'] ) ? $product['id'] : 0;
- // PHP 7.0.
- $product['id'] = $product['id'] ?? 0;
- // PHP 7.4.
- $product['id'] ??= 0;
不推荐使用的功能
PHP 7.4 将弃用某些功能。插件和主题作者可以查阅完整列表,以确定是否应更新任何过时的代码。我挑选了过去几年在插件和主题代码中看到的一些项目。在当前代码库中,大多数其他不推荐使用的功能不太可能。
没有括号的嵌套三元运算符
嵌套三元运算符通常是开发人员应避免的东西。说真的,只是不要写它们。它们很难遵循,并且由于人为错误而易于出错。但是,如果您要谨慎行事并放弃好的建议,请至少使用括号。PHP 7.4 不建议使用不带括号的嵌套三元组。
- // 已放弃使用
- $value = $a ? $b : $c ? $d : $e;
- // 好用的
- $value = ( $a ? $b : $c ) ? $d : $e;
- // 好用的
- $value = $a ? $b : ( $c ? $d : $e );
在对象上使用 array_key_exists()
开发人员不应在对象上使用 array_key_exists( ),因为对象不是数组。而是使用更合适的 property_exists( ) 函数或 isset( )。
- // 已放弃使用
- if ( array_key_exists( $property, $object ) ) {}
- // 好用的
- if ( property_exists( $object, $property ) ) {}
- // 好用的
- if ( isset( $object->$property ) ) {}
带有花括号的数组和字符串偏移量访问
使用花括号进行数组和字符串偏移量访问有点稀少,但是我已经看到了几次。确保您使用的方括号[ ],而不是的大括号{ }。
- // 已放弃使用
- $value = $a{ $key };
- // 好用的
- $value = $a[ $key ];
最后还是希望 WordPress 的开发人员们能够尽早做出适应 PHP 7.4 新特性的兼容性主题和插件更新。
转载请注明链接地址:荐爱小站 » 最新 PHP 7.4 版本对 WordPress主题和插件开发的影响