PHP 7.4中的新性能
- 公布日期可能正在 2019 年 12 月阁下,尚待确认
- 短闭包,可完成更简约的单行书写
- 预加载,以进步功能
- 类中的类型属性
- 自界说工具序列化增加一种(反)序列化工具的新办法
- 改良类型差别
- 简化 Null 兼并运算符
- FFI 为 PHP 扩大开发开拓新时机
- 弃用短开标签
- 正在数组中支持开展运算符
- 浏览如下内容理解更多
短闭包 RFC
短闭包完成更简约的单行书写。
array_map(function (User $user) { return $user->id; }, $users)
array_map(fn(User $user) => $user->id, $users)
对于短闭包的一些留意事项:
- 能够拜访父作用域,没有需求
use
要害字。 $this
能够像一般的闭包同样应用。- 短闭包只能蕴含一行,也就是
return
语句。
你能够正在这里深化浏览它们。
类型属性 RFC
类属性能够提醒类型:
class A { public string $name; public Foo $foo; }
改良的类型差别 RFC
我以前写过 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) { /* … */ } }
Null 兼并运算符 RFC
再也不需求这样做:
$data['date'] = $data['date'] ?? new DateTime();
你能够这样做:
$data['date'] ??= new DateTime();
数组开展运算符 RFC
如今你能够正在数组中应用开展运算符:
$arrayA = [1, 2, 3]; $arrayB = [4, 5]; $result = [0, ...$arrayA, ...$arrayB, 6 ,7]; // [0, 1, 2, 3, 4, 5, 6, 7]
请留意,这仅实用于带数字键的数组。
内部函数接口 RFC
内部函数接口,简称 FFI,容许从用户区挪用 C 代码。这象征着 PHP 扩大能够用纯 PHP 编写。
应该指出,这是一个复杂的话题。您依然需求 C 常识能力正确应用此性能。
预加载 RFC
预加载是 PHP 外围的一个振奋民气的新性能,能够带来不成预估的功能改良。
简而言之:假如您明天应用的是框架,则必需正在每一次申请时加载以及从新编译其文件。预加载容许效劳器正在启动时于内存中加载 PHP 文件,并使它们耐久化可用于一切后续申请(只需不绝电)。
功能晋升当然需求付出价值:假如预加载文件的源文件发作变动,则必需从新启动效劳器(该局部如有贰言,请查看 RFC 具体引见)
自界说工具序列化 RFC
RFC 添加了两个新的魔术办法:__serialize
以及 __unserialize
。这些办法以及 __sleep
和 __wakeup
的没有同的地方曾经正在 RFC 中进行了探讨。
衔接优先级 RFC
假如你书写了相似如下的内容:
echo "sum: " . $a + $b;
PHP 以前会像这样编译它:
echo ("sum: " . $a) + $b;
而 PHP 8 将使它以下编译:
echo "sum :" . ($a + $b);
当正在遇到不圆括号蕴含的 '+' 或 ' - ' 表白式以前有 '.' 的时分,PHP 7.4 会提醒弃用正告。
RFC 投票流程改良
这正在技巧上没有是与 PHP 7.4 相干的更新,但值患上一提的是:RFC的投票规定曾经扭转。
- 他们将老是需求 2/3 的泰半支持能力经过。
- 投票工夫没有短,一切RFC必需至多开放 2 周。
参考文献的反思 RFC
像 Symfony 的 var dumper 这样的库重大依赖于反射 API 来牢靠地转储变量。之前,不对参考文献提供适当的反映支持,招致这些库依赖于黑客来检测反映。
PHP 7. 4 增加了 ReflectionReference
处理此成绩的类。
增加 mb_str_split
函数 RFC
此函数提供与 str_split
多字节字符串相反的性能。
永世支持 ext-hash
RFC
正如题目所说,此扩大如今可正在一切 PHP 装置中永世支持应用。
默许没有启用 PEAR EXTERNALS
因为 PEAR 再也不支持保护,外围团队决议正在 PHP 7.4 中删除了它的默许装置。
明码哈希注册表RFC
对若何应用散列库进行外部更改,以便用户能够更轻松地应用它们。
弃用ext/wwdx
RFC
此数据替换格局从未规范化,如今曾经弃用该扩大。
PHP 短标签被弃用 RFC
短开标签 <?
已被弃用,将正在 PHP 8 中删除了。短申明标志 <?=
没有受影响。
左联系关系三元运算符被弃用 RFC
三元运算符正在 PHP 中有一些希奇的怪癖。此 RFC 为嵌套的三元语句增加了弃用。正在 PHP 8 中,此弃用将转换为编译时谬误。
1 ? 2 : 3 ? 4 : 5; // deprecated (1 ? 2 : 3) ? 4 : 5; // ok
向后没有兼容的更改 UPGRADING
晋级PHP版本时,您应该始终查看完好的 UPGRADING 文档。
如下是一些突出显示的向后没有兼容的更改:
- 挪用
var_dump
一个DateTime
或DateTimeI妹妹utable
实例前面将再也不保存工具的可拜访属性。 openssl_random_pseudo_bytes
将正在谬误状况下抛出异样。- 测验考试序列化一个
PDO
或PDOStatement
实例将天生一个Exception
而没有是一个PDOException
。 挪用
get_object_vars()
上的ArrayObject
实例将前往的属性ArrayObject
自身,而没有是包装的数组或工具的值。请留意,(array)
强迫转换没有受影响。
更多PHP相干技巧文章,请拜访PHP教程栏目进行学习!
以上就是三分钟理解PHP 7.4新特点的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学 新特性 7.4