PHP 7.4可能将于2019年12月发布。此页面将定期更新。
<strong>Preloading</strong>
预加载 rfc
Preloading
(预加载)是对PHP核心的一个惊人的补充,它可以带来一些主要的性能改进。
简而言之:如果你今天使用的是框架,那么它的文件必须在每次请求时加载和重新编译。预加载允许服务器在启动时在内存中加载PHP文件,并使它们对所有后续请求永久可用。
性能的提高当然是有代价的:如果预加载文件的来源发生变化,则必须重新启动服务器。
<strong>Typed properties</strong>
rfc
类变量可以是类型提示:
class A { public string $name; public Foo $foo; }
更新:到目前为止,已合并了Typed properties,从而为PHP 7.4确认了这些属性。
<strong>Improved type variance</strong>
(改进的类型差异) 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目前处于投票阶段,但看起来它会毫无问题地通过。
<strong>Foreign Function Interface</strong>
(外部函数接口) rfc
外部函数接口,简称FFI,允许从用户域调用C代码。这意味着PHP扩展可以用纯PHP编写。
值得注意的是,这是一个复杂的话题。你仍然需要C知识才能正确地使用这个特性。
<strong>Null</strong>
合并赋值操作符 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中添加。
<strong>No more narrow margins</strong>
rfc
从技术上讲,这并不是一个与PHP 7.4相关的更新,但它确实值得一提。RFC的投票规则已经改变:他们总是需要2/3的多数才能通过。
<strong>Reflection for references</strong>
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
)注册表 rfc
内部更改哈希库的使用方式,以便用户更容易地使用它们。
弃用<strong>ext / wwdx</strong>
rfc
这种数据交换格式从来没有标准化过,现在它的扩展被废弃了。
向后不兼容的变更升级
在升级PHP版本时,应该始终查看完整的升级文档。
以下是突出显示的一些向后不兼容的更改:
• 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
相关推荐:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)