为什么 WordPress 至少使用 PHP 7.4
先说一下 WordPress 最近这几个版本对 PHP 版本要求的改进,首先WordPress 在 6.3 版本彻底放弃对 PHP 5 的支持,然后WordPress 6.4 推荐使用 PHP 8.1 或 8.2,WPJAM Basic 升级到 6.4 之后,也最低要求 PHP 7.4。
那么为什么要至少使用 PHP 7.4,因为使用 PHP 7.4 开发太爽了,怎么爽呢,我简单说一下:
新函数
PHP 7.3 引入 is_countable()
和 array_key_first()
, array_key_last()
这三个函数,在函数处理的时候使用会带来非常大的便捷。不过这个当然不是重点,WordPress 内置了这三个函数的兼容版本,意义是,任何版本的 PHP 都可以使用。
在数组中展开数组
Argument unpacking(参数解包)是在 PHP 5.6 中引入的语法,它允许开发者在函数调用时使用展开运算符 ...
来传递数组的元素作为多个参数,这对于动态函数调用非常有用,尤其是当你不知道你将传递多少参数时:
function wpjam_ob_get_contents($callback, ...$args){
ob_start();
call_user_func($callback, ...$args);
return ob_get_clean();
}
PHP 7.4 进一步增强了这个特性,允许开发者在数组中使用展开运算符,它会比使用 array_merge()
函数合并数组速度更快,因为展开运算符 (...
) 它是个语法结构而不是一个函数。
下面是 WPJAM Basic 处理字段 class
的代码,这是使用 array_merge
合并数组:
$class = array_merge(wp_parse_list($this->wrap_class), [$this->disabled, $this->readonly, ($this->is('hidden') ? 'hidden' : '')]);
改成在数组中展开数组方法之后:
$class = [...wp_parse_list($this->wrap_class), $this->disabled, $this->readonly, ($this->is('hidden') ? 'hidden' : '')];
箭头函数(短闭包)
在对于 PHP 而言,匿名函数有点冗长并且难以使用和维护的,所以 PHP 7.4 推出了更短并且语法更简洁的箭头函数(短闭包),能够在很大程度上使我们的 PHP 代码更简洁。
$schema = []; // 前面计算获取
// 使用传统的匿名函数
$value = array_map(function($item) use($schema){
return $this->sanitize_value($item, $schema);
}, $value);
// 使用 7.4 引入的箭头函数
$value = array_map(fn($item) => $this->sanitize_value($item, $schema), $value);
可以看出箭头函数更加简洁,只用一行代码即可重写,不需要使用 return
,并且在父作用域里定义的变量被隐式捕获(隐式作用域绑定)了,即无需使用 use
关键字。
空合并赋值操作符
空合并赋值运算符是一种缩写方式,它结合了 isset()
检查和三元运算符,下面的例子如果 $product
数组的 id
是否设置了,如果没有则设置为默认值 0 ,我们可以看看 PHP 版本之间代码的演变:
// 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,人生苦短,编程开心最重要。