美文网首页
PHP 7.4.0 新特性

PHP 7.4.0 新特性

作者: 欢欢011 | 来源:发表于2019-12-11 16:56 被阅读0次

PHP 7.4于2019年11月28日正式发布

新的功能:

1.类型属性 

类型属性现在支持类型声明  示例将强制$ user-> id只能分配数值,而$ user-> name只能分配字符串值。

<?php

class User {

        public  int $id;

        public   string $name;

}

?>

箭头函数

箭头函数提供了用于定义具有隐式按值作用域绑定的函数的简写语法。

$factor = 10;

$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);

// $nums = array(10, 20, 30, 40);

?>


有限返回类型协方差和参数类型协方差

现在,以下代码将起作用:

class A {}

class B extends A {}

class Producer {

    public function  method(): A {}

}

class ChildProducer extends Producer {

    public function method(): B {}

}

?>

仅当使用自动加载时,才提供完全差异支持。在单个文件中,只能使用非循环类型引用,因为所有类在被引用之前都必须可用。

空合并分配运算符

$array['key'] ??= computeDefault();

// is roughly equivalent to

if (!isset($array['key'])) {

    $array['key'] = computeDefault();

}

?>

在数组内部解包

$parts= ['apple', 'pear'];

$fruits = ['banana', 'orange', ...$parts, 'watermelon'];

// ['banana', 'orange', 'apple', 'pear', 'watermelon'];

?>

数值文字分隔符

数字文字可以在数字之间包含下划线。

6.674_083e

-11; // float

299_792_458;   // decimal

0xCAFE_F00D;   // hexadecimal

0b0101_1111;   // binary

?>

允许__toString()中的异常

现在允许 从__toString()引发异常。以前,这导致了致命错误。字符串转换中现有的可恢复致命错误已转换为 错误异常。

OP缓存

添加了对预加载代码的支持。

带标签名称数组的strip_tags()

strip_tags()现在还接受一个允许的标签数组: 现在,您可以编写 strip_tags($ str,['a','p'])来代替 strip_tags($ str,'

自定义对象序列化

添加了用于自定义对象序列化的新机制,该机制使用了两个新的魔术方法:__serialize 和__unserialize

// Returns array containing all the necessary state of the object.

public function __serialize(): array;

// Restores the object state from the given data array.

public function __unserialize(array $data): void;

?>

新的序列化机制取代了 Serializable接口,该接口将在以后弃用。

没有参数的数组合并功能

现在可以不带任何参数地调用 array_merge() array_merge_recursive(),在这种情况下,它们将返回一个空数组。与传播运算符(例如 array_merge(... $ arrays))结合使用时很有用。

proc_open()函数

proc_open()现在接受命令数组而不是字符串。在这种情况下,该过程将直接打开(无需通过shell),PHP将处理任何必要的参数转义。

<?php

proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

?>

proc_open()现在支持 重定向描述符。

// Like 2>&1 on the shell

proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

// Like 2>/dev/null or 2>nul on the shell

proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

?>


SQLite3

添加了SQLite3 :: lastExtendedErrorCode() 以获取最后的扩展结果代码。

添加了SQLite3 :: enableExtendedResultCodes($ enable = true),这将使SQLite3 :: lastErrorCode() 返回扩展结果代码。

PDO_SQLite

PDOStatement :: getAttribute(PDO :: SQLITE_ATTR_READONLY_STATEMENT) 允许检查该语句是否为只读,即是否不修改数据库。

PDO :: setAttribute(PDO :: SQLITE_ATTR_EXTENDED_RESULT_CODES,true) 允许在PDO :: errorInfo() 和PDOStatement :: errorInfo()中使用SQLite3扩展结果代码。

PDO_OCI

PDOStatement :: getColumnMeta()现在可用。

相关文章

  • PHP 7.4.0 新特性

    PHP 7.4于2019年11月28日正式发布 新的功能: 1.类型属性 类型属性现在支持类型声明 示例将强制$ ...

  • PHP 7.4.0 发布

    PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。PHP 7.4.0 进行了许多改进,并...

  • MacOS Catalina编译安装PHP7.4.0

    下载源码 下载地址https://www.php.net/distributions/php-7.4.0.tar....

  • php5.5 新特性

    php5.5新特性

  • php新特性

    php5.6新特性 参考 使用表达式定义常量,使用const定义常量数组 使用 ... 运算符定义变长参数函数 使...

  • PHP新特性

    PHP5.5新特性 字符串直接表达式 直接通过中括号获取字符串中的单个字符。 foreach和list() for...

  • PHP 新特性

    命名空间 namespace 其作用是按照一种虚拟的层次结构组织PHP代码,现代PHP组件和框架都放在各自全局唯一...

  • 生成器

    PHP Manual手册对于生成器的概述:PHP Manual Generator PHP Manual手册新特性...

  • php7.4新特性

    php7.4.0已经发布,这是一个船新的版本,记录一下 返回类型限定 类的属性限定 3.** 数组解构**(和js...

  • php7.1加密解密 openssl_encrypt 替代

    1 概况 php7.1发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利。但是从php7.0 升...

网友评论

      本文标题:PHP 7.4.0 新特性

      本文链接:https://www.haomeiwen.com/subject/kuiegctx.html