首页 > 头条 > 正文

PHP 7.4预计将在2019年12月发布

藏色散人
发布: 2019-03-27 11:33:30
原创
6634人浏览过

php 7.4可能将于2019年12月发布。此页面将定期更新。

Preloading预加载 rfc

Preloading(预加载)是对PHP核心的一个惊人的补充,它可以带来一些主要的性能改进。

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

性能的提高当然是有代价的:如果预加载文件的来源发生变化,则必须重新启动服务器。

立即学习PHP免费学习笔记(深入)”;

Typed properties rfc

类变量可以是类型提示:

class A
{
    public string $name;
    
    public Foo $foo;
}
登录后复制

更新:到目前为止,已合并了Typed properties,从而为PHP 7.4确认了这些属性。

Improved type variance(改进的类型差异) rfc

我以前写过关于PHP类型系统的文章,所以很高兴看到PHP内核中出现了一些改进。

类型差异是一个值得自己发表博文的主题;

简而言之:你将能够使用covariant返回类型

class ParentType {}
class ChildType extends ParentType {}

class A
{
    public function covariantReturnTypes(): ParentType
    { /* … */ }
}

class B extends A
{
    public function covariantReturnTypes(): ChildType
    { /* … */ }
}
登录后复制

和contravariant参数。

class A
{
    public function contraVariantArguments(ChildType $type)
    { /* … */ }
}

class B extends A
{
    public function contraVariantArguments(ParentType $type)
    { /* … */ }
}
登录后复制

更新:RFC目前处于投票阶段,但看起来它会毫无问题地通过。

Foreign Function Interface(外部函数接口) rfc

外部函数接口,简称FFI,允许从用户域调用C代码。这意味着PHP扩展可以用纯PHP编写。

值得注意的是,这是一个复杂的话题。你仍然需要C知识才能正确地使用这个特性。

Null合并赋值操作符 rfc

不是这样做:

$data['date'] = $data['date'] ?? new DateTime();
登录后复制

你可以这样做:

$data['date'] ??= new DateTime();
登录后复制

更新:这个特性现在合并到PHP 7.4中。

自定义对象序列化 rfc

这个RFC添加了两个新的魔术方法:__serialize和__unserialize。在RFC中讨论了这些方法与__sleep和__wakeup方法的区别。

更新:RFC通过。这个特性将在PHP 7.4中添加。

No more narrow margins rfc

从技术上讲,这并不是一个与PHP 7.4相关的更新,但它确实值得一提。RFC的投票规则已经改变:他们总是需要2/3的多数才能通过。

Reflection for references rfc

像Symfony的var转储程序这样的库很大程度上依赖于反射API来可靠地转储变量。以前,没有对引用的适当反射支持,导致这些库依赖hack来检测引用。

PHP 7.4添加了ReflectionReference类,解决了这个问题。

更新:RFC已通过,PHP 7.4已确认更改。

添加mb_str_split rfc

这个函数提供了与str_split相同的功能,但是是在多字节字符串上。

始终启用ext-hash rfc

正如标题所说,这个扩展现在在所有PHP安装中都是永久可用的。

默认情况下不启用PEAR

由于PEAR不再积极维护,核心团队决定用PHP 7.4删除其默认安装。

密码哈希(Hashing)注册表 rfc0

内部更改哈希库的使用方式,以便用户更容易地使用它们。

弃用ext / wwdx rfc1

这种数据交换格式从来没有标准化过,现在它的扩展被废弃了。

向后不兼容的变更升级

在升级PHP版本时,应该始终查看rfc2。

以下是突出显示的一些向后不兼容的更改:

• parent::在没有父级的类中引用将生成编译时错误而不是运行时错误。

• 在DateTime或datetimevariable实例上调用var_dump将不再在对象上留下可访问的属性。

• openssl_random_pseudo_bytes将在错误情况下抛出异常。

• 试图序列化PDO或PDOStatement实例将生成异常,而不是PDOException。

• 在ArrayObject实例上调用get_object_vars()将返回ArrayObject本身的属性,而不是被包装的数组或对象的值。注意(数组)强制转换不受影响。

翻译自:https://stitcher.io/blog/new-in-php-74#reflection-for-references-rfc

相关推荐:

rfc3》

rfc4》

rfc5》

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号