资讯专栏INFORMATION COLUMN

php7.4都要来了

zhangrxiang / 3381人阅读

摘要:性能提升当然需要付出代价如果预加载文件的来源发生变化,则必须重新启动服务器。应该指出,这是一个复杂的主题。默认情况下不启用由于不再维护,核心团队决定使用删除其默认安装。将在错误情况下抛出异常。请注意,强制转换不受影响。

新特性

预加载
预加载是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) 强制转换不受影响。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31050.html

相关文章

  • php7.4都要来了

    摘要:性能提升当然需要付出代价如果预加载文件的来源发生变化,则必须重新启动服务器。应该指出,这是一个复杂的主题。默认情况下不启用由于不再维护,核心团队决定使用删除其默认安装。将在错误情况下抛出异常。请注意,强制转换不受影响。 新特性 预加载预加载是PHP核心的一个惊人的补充,可以带来一些重大的性能改进。简而言之:如果您今天使用的是框架,则必须在每次请求时加载和重新编译其文件。 预加载允许服务...

    zgbgx 评论0 收藏0
  • 还在期待安卓9.0吗?Android 10.0要来了

    摘要:目前,美国公司的安卓,已经正式全面推出有几个多月了。安卓最新功能及变化根据的消息得出,将从系统底层支持引擎。对于需要经常进行国际出行的安卓手机用户来说,这是一项非常方便的辅助拨号功能,省去手动添加国家地区代码的繁杂步骤。 目前,美国 Google公司的 AndroidP (安卓9.0),已经正式全面推出有几个多月了。众多手机品牌厂商也都在积极的进行更新适配 Android 9.0 系统...

    YacaToy 评论0 收藏0
  • 还在期待安卓9.0吗?Android 10.0要来了

    摘要:目前,美国公司的安卓,已经正式全面推出有几个多月了。安卓最新功能及变化根据的消息得出,将从系统底层支持引擎。对于需要经常进行国际出行的安卓手机用户来说,这是一项非常方便的辅助拨号功能,省去手动添加国家地区代码的繁杂步骤。 目前,美国 Google公司的 AndroidP (安卓9.0),已经正式全面推出有几个多月了。众多手机品牌厂商也都在积极的进行更新适配 Android 9.0 系统...

    Clect 评论0 收藏0
  • 为vue3学点typescript(1), 体验typescript

    摘要:更新啦第一课体验第二课基础类型和入门高级类型第三课泛型第四课解读高级类型要来了看了的视频特别兴奋要来了是用开发的我揣测在的带领下会成为主流呢要不先学点年最酷的前端技术我是年初开始使用的自从开始用上了就喜欢上了真的爱不释手最爱他几点很多小错误 更新啦 第一课, 体验typescript 第二课, 基础类型和入门高级类型 第三课, 泛型 第四课, 解读高级类型 vue3要来了 看了vue ...

    Batkid 评论0 收藏0
  • 与 Rust 社区亲密接触!首届 RustCon Asia 来了

    摘要:来了由秘猿科技与联合主办,亚洲第一届大会将于月日在中国北京正式开启。将是一次亚洲社区的大聚会,也因为此次大会,亚洲本土的社区连接到了全球其它地区的社区。未来,我们将推进到亚洲的其他国家,更好的促进当地社区与全球社区的合作和互助。 showImg(https://segmentfault.com/img/bVbqUjV?w=1089&h=647); RustCon Asia 来了!由秘猿...

    Cristalven 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<