预加载是PHP核心的一个惊人的补充,能够带来一些重大的性能改进。 简而言之:若是您今天使用的是框架,则必须在每次请求时加载和从新编译其文件。 预加载容许服务器在启动时在内存中加载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 { /* … */ }
}
复制代码
和回调参数dom
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中合并。spa
从技术上讲,这不是与 PHP 7.4 相关的更新,但它绝对值得一提。 RFC 的投票规则已经改变:它们老是须要 2/3 的多数才能经过。code
像 Symfony 的 var 转储程序这样的库很大程度上依赖于反射 AP I来可靠地转储变量。 之前,没有对引用的适当反射支持,致使这些库依赖 hack 来检测引用。 PHP 7.4 添加了 ReflectionReference 类来解决这个问题。 更新02-14:RFC已经过,PHP 7.4已确认更改。cdn
mb_str_split
的添加此函数提供与 str_split 相同的功能,但在多字节字符串上。
ext-hash
始终启用正如标题所说,此扩展示在可在全部 PHP 版本中安装永久使用。
因为 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