[译] 关于 PHP 7.4 的最新消息

栏目: PHP · 发布时间: 6年前

内容简介: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 :: 将生成编译时错误而不是运行时错误。
  • DateTimeDateTimeImmutable 实例上调用 var_dump 将不再在对象上留下可访问的属性。
  • openssl_random_pseudo_bytes 将在错误情况下抛出异常。
  • 尝试序列化 PDOPDOStatement 实例将生成异常而不是 PDOException
  • ArrayObject 实例上调用 get_object_vars() 将返回 ArrayObject 本身的属性,而不是包装数组或对象的值。 请注意, (array) 强制转换不受影响。

等一下......

如果你已经看到文章末尾了,你很可能对 PHP 感兴趣。 也许你也有兴趣阅读我的其他内容? 以下是我写的一些内容。 本人博客 :iacblog 本人公众号 :php_open


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical JavaScript, DOM Scripting and Ajax Projects

Practical JavaScript, DOM Scripting and Ajax Projects

Frank Zammetti / Apress / April 16, 2007 / $44.99

http://www.amazon.com/exec/obidos/tg/detail/-/1590598164/ Book Description Practical JavaScript, DOM, and Ajax Projects is ideal for web developers already experienced in JavaScript who want to ......一起来看看 《Practical JavaScript, DOM Scripting and Ajax Projects》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具