PHP7.4新特性

PHP7.4新特性

PHP7.4版本已经正式发布了,做为PHP7版本的最后一次大更新,这一次又为我们带来了什么新特性呢?

属性类型

PHP7.4中的类属性终于可以为属性指定变量类型了。一切都是为了JIT铺垫。静态固定类型的引入将让PHP更加的工程化。

1class User {
2    public int $id;
3    public string $name;
4}

箭头函数

好吧,上一个是向Java、C++看齐,这一个就是把JavaScript的又一强大特性搬了过来。箭头函数不陌生吧,配合匿名函数简直不要太香。

1$factor = 10;
2$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);

空值合并赋值运算操作符

PHP7的??操作符这次也带来了更新,这回直接可以进行合并赋值操作了。多行代码或者原来用??写得很长的代码这回可以写得更少了。

1$array['key'] ??= computeDefault();
2// is roughly equivalent to
3if (!isset($array['key'])) {
4    $array['key'] = computeDefault();
5}

数组元素解包

…操作符可以用在数组元素中了。

1$parts = ['apple', 'pear'];
2$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
3// ['banana', 'orange', 'apple', 'pear', 'watermelon'];

数字文本可包含下划线

16.674_083e-11; // float
2299_792_458;   // decimal
30xCAFE_F00D;   // hexadecimal
40b0101_1111;   // binary

strip_tags()可以使用数组定义保留的标签

1strip_tags($str, ['a', 'p']);
2// 原来要这么写
3strip_tags($str, '<a><p>');

新增自定义对象序列化魔术方法

原来的__sleep()和__weakup()说实话真的太不形象了。睡着和起床了来表示序列化和反序列操作。这个…

不过总算是给掰回来了。PHP7.4新定义了__serialize()和__unserialize()方法。

1// Returns array containing all the necessary state of the object.
2public function __serialize(): array;
3
4// Restores the object state from the given data array.
5public function __unserialize(array $data): void;

其他

  • 弱引用:允许程序员保留对某个对象的引用,该对象不会阻止该对象被销毁。

  • __toString中出现的错误从可恢复的错误转换为错误异常,可被try/catch

  • 添加mb_str_split()函数

参考文档:
https://www.php.net/manual/zh/migration74.new-features.php

(0)

相关推荐

  • 细说变量覆盖那些事

    前言 最近在挖洞和看一些ctf题目中可以看到一些变量覆盖的知识点,之前对这个方面学习的有点不全面,虽然网上有这方面的文章,但是感觉讲的不是很全面,所以就决定写一篇文章来总结这方面的知识. 本文涉及相关 ...

  • cad2022好用吗?cad2022新特性 AutoCAD LT 2022 for Mac最新版

    AutoCAD2022中文版是Autodesk公司的一款专业CAD绘图软件,aAutoCAD mac版可用于建筑设计.机械设计.电气设计.工程制图等各种行业! 全新功能 探索AutoCADLT®202 ...

  • golang1.16新特性速览

    今天是假期最后一天,明天起大家也要陆续复工了.golang1.16也在今天正式发布了. 原定计划是2月1号年前发布的,不过迟到也是golang的老传统了,正好也趁着最后的假期快速预览一下golang1 ...

  • Oracle 19.8新特性"asmcmd credverify" and "asmcmd credfix"

    平台:Redhat Linux 7.6 数据库版本:Oracle 19.10 问题描述:进行OCR磁盘替换DD破坏实验,并删除原有的OCR磁盘组.中间过程中,因spfile文件以及asm密码文件没有进 ...

  • 安卓12重磅新特性曝光:国产流氓APP将被彻底终结?

    不同于早些年,现在的智能手机系统基本上除了苹果的iOS,就是安卓了.安卓系统从第一代走到今天已经来到了第十二个版本,相比早期的安卓系统,现在的安卓系统越来越完善,在流畅度和安全性上也越发看齐苹果iOS ...

  • 带你了解C#每个版本新特性

    上学时学习C#和.NET,当时网上的资源不像现在这样丰富,所以去电脑城买了张盗版的VS2005的光盘,安装时才发现是VS2003,当时有一种被坑的感觉,但也正是如此,让我有了一个完整的.NET的学习生 ...

  • 解读HTTP/2与HTTP/3 的新特性

    前端技术优选 今天 以下文章来源于前端工匠 ,作者浪里行舟君 前言 HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当 ...

  • MySQL8.0新特性

    MySQL从5.7一跃直接到8.0,这其中的缘由,咱就不关心那么多了,有兴趣的朋友自行百度,本次的版本更新,在功能上主要有以下6点: 账户与安全 优化器索引 通用表表达式 窗口函数 InnoDB 增强 ...

  • JS 语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性

    大前端技术之路 14篇原创内容 公众号 新特性 ES6(2015) 1. 类(class) class Man {   constructor(name) {     this.name = '小豪' ...

  • C#语言新特性(6.0-8.0)

    只读的自动属性 通过声明只有get访问器的自动属性,实现该属性只读 public string FirstName { get; } public string LastName { get; } 自 ...