内容简介:PHP 7.4可能会在2019年12月的某个地方发布。此页面将同时收到定期更新。 最后更新时间是2019年1月14日预加载是PHP核心的一个惊人的补充,可以带来一些重大的性能改进。 简而言之:如果您今天使用的是框架,则必须在每次请求时加载和重新编译其文件。 预加载允许服务器在启动时在内存中加载PHP文件,并使它们永久可用于所有后续请求。 性能提升当然需要付出代价:如果预加载文件的来源发生变化,则必须重新启动服务器。类变量类型可以提前声明:
PHP 7.4可能会在2019年12月的某个地方发布。此页面将同时收到定期更新。 最后更新时间是2019年1月14日
预加载是 PHP 核心的一个惊人的补充,可以带来一些重大的性能改进。 简而言之:如果您今天使用的是框架,则必须在每次请求时加载和重新编译其文件。 预加载允许服务器在启动时在内存中加载PHP文件,并使它们永久可用于所有后续请求。 性能提升当然需要付出代价:如果预加载文件的来源发生变化,则必须重新启动服务器。
设置强类型
类变量类型可以提前声明:
class A { public string $name; public Foo $foo; } 复制代码
更新07-01:截至目前,已合并类型属性,因此已确认PHP 7.4。
改进类型差别
我过去曾写过 PHP 的类型系统,所以很高兴看到一些改进实际上是在 PHP 的核心。 类型差异是一个值得自己的博客文章的主题; 简而言之:你将能够使用协变返回类型......
class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } } 复制代码
和回调参数
class A { public function contraVariantArguments(ChildType $type) { /* … */ } } class B extends A { public function contraVariantArguments(ParentType $type) { /* … */ } } 复制代码
更新14-01:RFC目前处于投票阶段,但看起来它会毫无问题地通过。
外部函数接口
外部函数接口,简称 FFI ,允许从用户区调用 C代码。 这意味着 PHP 扩展可以用纯 PHP 编写。 应该指出,这是一个复杂的主题。 您仍然需要 C 的知识才能正确使用此功能。
空融合分配运算符
而不是这样做:
$data['date'] = $data['date'] ?? new DateTime(); 复制代码
你可以这样做:
$data['date'] ??= new DateTime(); 复制代码
更新22-01:此功能现在在PHP 7.4中合并。
获取更多利润
从技术上讲,这不是与 PHP 7.4 相关的更新,但它绝对值得一提。 RFC 的投票规则已经改变:它们总是需要 2/3 的多数才能通过。
反射引用
像 Symfony 的 var 转储程序这样的库很大程度上依赖于反射 AP I来可靠地转储变量。 以前,没有对引用的适当反射支持,导致这些库依赖 hack 来检测引用。 PHP 7.4 添加了 ReflectionReference 类来解决这个问题。 更新02-14:RFC已通过,PHP 7.4已确认更改。
mb_str_split
的添加
此函数提供与 str_split 相同的功能,但在多字节字符串上。
ext-hash
始终启用
正如标题所说,此扩展现在可在所有 PHP 版本中安装永久使用。
PEAR 默认情况下不启用
由于 PEAR 不再维护,核心团队决定使用 PHP 7.4 删除其默认安装。
密码哈希注册表
对如何使用散列库进行内部更改,以便用户可以更轻松地使用它们。
弃用 ext/wwdx
此数据交换格式从未标准化,现在不推荐使用其扩展名。
不向后兼容的变化
升级 PHP 版本时,您应该始终查看完整的 UPGRADING 文档。 以下是一些突出显示的向后不兼容的更改:
-
在没有父级的类中引用
parent ::
将生成编译时错误而不是运行时错误。 -
在
DateTime
或DateTimeImmutable
实例上调用var_dump
将不再在对象上留下可访问的属性。 -
openssl_random_pseudo_bytes
将在错误情况下抛出异常。 -
尝试序列化
PDO
或PDOStatement
实例将生成异常而不是PDOException
。 -
在
ArrayObject
实例上调用get_object_vars()
将返回ArrayObject
本身的属性,而不是包装数组或对象的值。 请注意,(array)
强制转换不受影响。
等一下......
如果你已经看到文章末尾了,你很可能对 PHP 感兴趣。 也许你也有兴趣阅读我的其他内容? 以下是我写的一些内容。 本人博客 :iacblog 本人公众号 :php_open
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Fuchsia最新消息,确认支持Android应用
- 最新消息!Cloudera 全球发行版正式集成 Apache Flink
- 消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?
- 消息队列(三)常见消息队列介绍
- 消息队列(七)RocketMQ消息发送
- 消息队列探秘 – RabbitMQ 消息队列介绍
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。