PHP7.4新特性预览

  • PHP7.4新特性预览已关闭评论
  • 73 views
  • A+
所属分类:PHP

虽然PHP 7.4还未发布,但是RFC已经确定了该版本的一些新性。这个版本的改动有点多,有很多实用性功能。发布日期可能在2019年12月左右,但尚待确认。让我们看看有那些地方的改动。

  • 短闭包 RFC
  • 属性类型定义 RFC
  • Null Coalescing Assignment Operator RFC
  • 自定义对象序列化 RFC
  • 弃用左关联三元运算符 RFC
  • 预加载 RFC
  • 外部函数接口 RFC
  • Reflection for references RFC
  • mb_str_split RFC
  • ext-hash 始终开启RFC

短闭包

引用更简单的闭包写法,增加了类似Lambda的表达式的写法。

在原来的基础加上fn关键字。采用了类型javascript =>写法。

属性类型定义

可以指定类属性的类型定义,更加的明确类型。

这项特性增加,在写大型工程的时候,不必为变量类型返回值来回查看源码,这样对IDE的支持也更好。

Null Coalescing Assignment Operator

更短的??操作符写法。

弃用左关联三元运算符

与大多数其他语言不同,PHP中的三元运算符是左关联的而不是右关联的。对于在不同语言之间切换的程序员来说,左关联行为通常没有用,并且令人困惑。此RFC建议弃用并删除三元运算符的左关联性,并且需要显式使用括号。

自定义对象序列化

添加两个新的序列化魔术方法__serialize,__unserialize主要来解决__wakeupSerializable带来一些问题。可以通过https://wiki.php.net/rfc/custom_object_serialization来查看对比。

预加载

预加载是PHP这期核心的变更,可以带来一些重大的性能改进。

简而言之,如果您使用的所有PHP Web框架,则必须在每次请求时加载和重新编译其文件。预加载允许服务器在启动时在内存中加载PHP文件,并使它们永久可用于所有后续请求。

性能提升当然需要付出代价,如果预加载文件的来源发生变化,则必须重新启动服务器。

外部函数接口

外部函数接口,简称FFI,此API允许在纯PHP中加载共享库(.DLL或.so),调用C函数和访问C数据结构,而无需深入了解Zend扩展API,也无需学习第三种“中间”语言。对于PHP,FFI开辟了一种在纯PHP中编写PHP扩展和绑定到C库的方法。。 这是一个复杂的主题。您仍然需要C知识才能正确使用此功能。大家可以阅读该项目来了解https://github.com/dstogov/php-ffi

Reflection for references

SymfonyvarCloner转储程序,这样的库很大程度上依赖于反射API来可靠地转储变量。以前,没有对引用的适当反射支持,导致这些库依赖hack来检测引用。 PHP 7.4添加了ReflectionReference类来解决这个问题。

mb_str_split

添加了多字节的字符串分割函数和str_split一样。

ext-hash 默认开启

哈希扩展(ext / hash)始终可用,类似于datesplpcre扩展。

以上就是PHP 7.4特性和函数,如果你需要查看所有的更新,你可以通过官方公开的日志查看。这个版本对性能提升是非常明显的特别预加载的功能。让我们拭目以待吧。官方预计发布日期可能在2019年12月左右。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin