PHP8新特性之match表达式

之前我们聊过JIT,最近PHP8 alpha2发布了,引入了一个新的关键字:match, 这个关键字的作用跟switch有点类似。
虽然我一般对语法糖无感,但这个我觉得还是有点意思,match这个词也挺好看,那么它是干啥的呢?

在以前我们可能会经常使用switch做值转换类的工作,类似:
在这里插入图片描述
(当然,有的同学会说,谁会这么写,用个数组转换不行么? 拜托,这是举例啊,数组也只能数字键和整数啊,万一key是需要其他表达式呢,万一你要多个key对应一个值呢,对吧?)
那么如果使用match关键字呢,可以变成类似:
在这里插入图片描述
相比switch, match会直接返回值,可以直接赋值给$result了。
并且,类似switch的多个case一个block一样,match的多个条件也可以写在一起,比如:
在这里插入图片描述
需要注意的和switch不太一样的是,以前我们用switch可能会经常遇到这种诡异的问题:
在这里插入图片描述
你会发现,bad竟然被输出了,这是因为switch使用了宽松比较(= =)。match就不会有这个问题了, 它使用的是严格比较(===),就是值和类型都要完全相等。
还有就是,当input并不能被match中的所有条件满足的时候,match会抛出一个UnhandledMatchError exception:
在这里插入图片描述
会得到:
在这里插入图片描述
这样就不用担心万一match条件没写全导致了不可预知的错误。
另外还是要说明,match是关键字,也就是从PHP8开始它不能出现在namespace或者类名中,如果你的项目中有用match作为类名的:
在这里插入图片描述
在PHP8开始将会得到语法错误了, 当然,方法名中还是可以用的。
详细的,可以参考RFC:Match Expression

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的PHP技术交流群点击此处

部分资料截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

还有限时精品福利:

★腾讯高级PHP工程师笔试题目
★亿级PV高并发场景订单的处理
★laravel开发天猫商城组件服务
★战旗TV视频直播的架构项目实战

扫描下面二维码领取

正在跳转(二维码自动识别)
对PHP后端技术,对PHP架构技术感兴趣的朋友,我的官方群点击此处,一起学习,相互讨论。

群内已经有管理将知识体系整理好(源码,学习视频等资料),欢迎免费领取。

本课程深度对标腾讯T3-T4标准,贴身打造学习计划为web开发人员进阶中高级、架构师提升技术,为自己增值涨薪!加入BAT特训营还可以获得内推大厂名额以及GO语言学习权限!!!

进阶PHP月薪30k>>>架构师成长路线【视频、面试文档免费获取】

猜你喜欢

转载自blog.csdn.net/weixin_49163826/article/details/107534159
今日推荐