📜  PHP 7.4 的新特性

📅  最后修改于: 2022-05-13 01:56:31.974000             🧑  作者: Mango

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