PHP 7.4 的新特性
简介: PHP是一种流行的通用脚本语言。它用于Web开发。它由 Rasmus Lerdorf 于 1994 年创建, PHP参考实现现在由PHP Group 生产。
PHP 7.4 更新 2019:不时出现的新功能对于任何语言的发展都非常重要和重要。 PHP多年来一直是流行的语言之一,主要原因之一是他们不断更新它并不时为其添加新功能。 PHP从其初始版本开始的性能现在要好得多。此外, PHP是最受欢迎的 10 种编程语言之一。
新特性: PHP 7.4 的一些新特性如下:
1. 数组中的展开运算运算符: PHP 7.4 将赋予在数组中使用展开运算符的能力,这比 array_merge 更快。扩展运算符被认为是一种语言结构,而 array_merge 是一个函数。此外,编译时间也得到了优化。
示例:这些是添加的新功能以及它们如何工作的说明。
$prime = ['2', '5'];
$all = ['1', '3', ...$prime, '7'];
输出:
1, 3, 2, 5, 7
2. 弱引用:在PHP 7.4 中,WeakReference 类允许我们保存指向对象的链接。它不像 Weakref 扩展的 WeakRef 类。由于这个特性,我们可以很容易地实现类似缓存的结构。
objects[$id] ?? null;
if($reference === null){
return null;
}
return $reference->get();
}
// The $id is the identifier for
// the stored object, int|string
// $object is used to store the object
public function setObject($id, $object) {
$this->objects[$id] =
WeakReference::create($object);
}
}
?>
上面的代码是一个弱引用的例子。弱引用类似于普通引用,只是它不会阻止垃圾收集器收集对象。
WeakReference不应与WeakRef混淆,后者是PHP扩展,而不是PHP的本机部分。
3. Preloading:这个功能我们可以上传OPcache中的文件、库。这些功能使我们能够将文件预加载到内存中。
示例:这只是一个虚拟实现。
$files = /* An array of files
that you want to preload */;
foreach ($files as $file) {
opcache_compile_file($file);
}
您要预加载的每个PHP文件都应从预加载脚本中传递给 opcache_compile_file() 或需要一次。
4. 箭头函数:它消除了以前的复杂性,因为使用匿名函数会增加PHP的复杂性。现在,这些特性使我们能够使我们的代码更加简洁和整洁。这只是为了消除复杂性并使代码更简单。
// A collection of Post objects
$posts = [/* … */];
$ids = array_map(function ($post) {
return $post->id;
}, $posts);
在更新之前,我们必须编写上面提到的代码。
// A collection of Post objects
$posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
- 它们以关键字fn开头
- 它们只有一个表达式,即 return 语句
- 不允许返回关键字
5. __toString()函数抛出异常:以前,标准库中存在用于将对象转换为字符串的函数,并且其中许多没有正确处理异常。
句法:
public Exception::__toString( void ) : string
返回值:是异常的字符串表示。
6. 合并赋值运算符:这在我们必须使用三元运算符和isset()函数时非常有用。这使您可以返回第一个操作数(如果存在),如果不存在,它将返回第二个操作数。在PHP 7 中引入了 Null coalesce equal运算符,以简化使用三元运算符的 isset() 检查。
// Before the 7.4 release
$data['username'] = $data['username'] ?? 'guest';
// After 7.4 new feature
$data['username'] ??= 'guest';
7. 数字字面量分隔符:数字字面量可以在数字之间包含下划线。
6.674_083e-11; // float
299_792_458; // decimal
0xCAFE_F00D; // hexadecimal
0b0101_1111; // binary
过滤器: FILTER_VALIDATE_FLOAT 过滤器支持 min_range 和 max_range 选项,其语义与 FILTER_VALIDATE_INT 相同。
FFI: FFI 是一个新的扩展,它是一种调用本机函数、访问本机变量以及创建/访问 C 库中定义的数据结构的简单方法。
GD:添加了 IMG_FILTER_SCATTER 图像过滤器,用于将散射过滤器应用于图像。
哈希:使用 Castagnoli 的多项式添加了 crc32c 哈希。此 CRC32 变体由 iSCSI、SCTP、Btrfs 和 ext4 等存储系统使用。
PDO:用户名和密码可以指定为 mysql、mssql、sybase、dblib、firebird 和 oci 驱动程序的 PDO DSN 的一部分。在PHP 7.4 发布之前,此功能仅由 pgsql 驱动程序支持。
参考: https://www. PHP.net/manual/en/migration74.new-features。 PHP