您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/3/24 9:56:20发布15次查看
php 7.4可能将于2019年12月发布。此页面将定期更新。
preloading预加载 rfc
preloading(预加载)是对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)注册表 rfc
内部更改哈希库的使用方式,以便用户更容易地使用它们。
弃用ext / wwdx 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
相关推荐:
《php7和php5在安全上的区别(实例)》
《php7 的抽象语法树(ast)带来的变化》
《php7语言的执行原理(php7源码分析)》
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product