PHP运算符 令人期待的PHP7.4
PHP 7.4 是下一个 PHP 7 的次要版本,预计将于 2019 年 11 月 28 日发布到 General Availability。让我们来了解下 PHP 7.4 新增的功能,这将使 PHP 更快,更可靠。
当然,更令我期待是 P
PHP 7.4 是下一个 PHP 7 的次要版本,预计将于 2019 年 11 月 28 日发布到 General Availability。让我们来了解下 PHP 7.4 新增的功能,这将使 PHP 更快,更可靠。 当然,更令我期待是 PHP 8。因为 JIT 的一些提议,已经获得批准,这可能成为 PHP 的又一个里程碑。 使用 PHP 7.4 的 PHP 有什么新功能? ● 支持数组内解包 - 数组扩展运算符 ● 箭头函数 2.0 (更加简短的闭包) PHP 7.4 在数组表达式中引入 Spread 运算符 自 PHP 5.6 起可用,参数解包是将数组和 Traversable 解包为参数列表的语法。要解压一个数组或 Traversable,必须以 ...(3 点)为前缀,如下例所示:
然而 PHP 7.4 RFC 建议将此功能扩展到数组中去定义:
Spread 运算符的第一个好处就是性能,RPC 文档指出: Spread 运算符应该比 array_merge 拥有更好的性能。这不仅仅是 Spread 运算符是一个语法结构,而 array_merge 是一个方法。还是在编译时,优化了高效率的常量数组。 Spread 运算符的一个显着优点是它支持任何可遍历的对象,而该 array_merge 函数仅支持数组。 以下是数组中参数带有 Spread 运算符的示例:
如果在 PHP 7.3 或更早版本中运行此代码,PHP 会抛出一个 Parse 错误:
相反,PHP 7.4 将返回一个数组
RFC 声明我们可以多次扩展同一个数组。此外,我们可以在数组中的任何位置使用 Spread Operator 语法,因为可以在 spread 运算符之前或之后添加常规元素。因此,以下代码将按预期工作:
也可以将函数返回的数组作为参数,放到新数组中:
PHP 7.4 输出以下数组:
我们也可以使用生成器:
但不允许通过引用传递的方式。请考虑以下示例:
如果我们尝试通过传递引用的方式,PHP 会抛出以下 Parse 错误:
如果第一个数组的元素是通过引用存储的,那么它们也通过引用存储在第二个数组中。这是一个例子:
这是我们用 PHP 7.4 获得的:
箭头函数 2.0 (简短闭包) 在 PHP 中,匿名函数被认为是非常冗长且难以实现和难以维护的,RFC 建议引入更简单PHP运算符,更清晰的箭头函数(或简短闭包)语法,这样我们就可以简洁地编写代码。 在 PHP 7.4 以前:
PHP 7.4 允许使用更简洁的语法,上面的函数可以重写如下:
目前,由于语言结构,匿名函数(闭包)可以使用 use 继承父作用域中定义的变量,如下所示:
但是在 PHP 7.4 中,父级作用域的值是通过隐式捕获的(隐式按值的作用域进行绑定)。所以我们可以用一行来完成一下这个函数:
父级作用域定义的变量可以用于箭头函数,它跟我们使用 use 是等价的,并且不可能被父级所修改。 新语法是对语言的一个很大改进,因为它允许我们构建更易读和可维护的代码。 NULL 合并运算符 由于日常使用中存在大量同时使用三元表达式和 isset () 的情况, 我们添加了 null 合并运算符 (??) 这个语法糖。如果变量存在且值不为 NULL, 它就会返回自身的值,否则返回它的第二个操作数。
这段代码的作用非常简单:它获取请求参数并设置默认值(如果它不存在)。但是在 RFC 这个例子中,如果我们有更长的变量名称呢?
长远来看,这段代码可能难以维护。因此,旨在帮助开发人员编写更直观的代码,这个 RFC 建议引入 null 合并等于运算符 (null_coalesce_equal_operator)??=,所以我们可以敲下面这段代码来替代上面的这段代码:
如果左侧参数的值为 null,则使用右侧参数的值。 -END- 声明:本文选自「php中文网」,搜索「 phpcnnew 」即可关注! (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |