当前位置: 首页 > 后端技术 > PHP

PHP8新特性的匹配表达式

时间:2023-03-30 04:06:31 PHP

我们之前讲过JIT。最近PHP8alpha2发布,引入了一个新的关键字:match,类似switch的功能。虽然我一般对语法糖没什么感觉,但是我觉得这个有点意思。match这个词也很漂亮,那么它有什么作用呢?以前我们可能经常用switch做值转换的工作,类似:(当然有同学会说,谁会这么写,用数组转换不行吗?拜托,这是例子,还有数组只能是数字键和整数,如果键需要其他表达式怎么办,如果你想要多个键对应一个值怎么办,对吧?)然后如果使用match关键字,它可以变得类似:与switch相比,matchwill直接返回值可以直接赋值给$result。而且,像switch的多case一块,match的多个条件也可以写在一起,例如:需要注意的是它和switch不一样,以前我们在使用switch的时候可能经常会遇到这样的奇葩问题:你会发现其实输出的是bad,这是因为switch使用了松散比较(==)。match不会有这个问题,它使用的是严格比较(===),即值和类型必须完全相等。另外,当匹配中的所有条件都不能满足输入时,匹配会抛出UnhandledMatchError异常:Youwillget:这样,你就不用担心匹配条件写不全会出现不可预知的错误了。另外需要说明的是,match是关键字,即不能出现在PHP8开始的命名空间或类名中。如果你在你的项目中使用match作为类名:从PHP8开始你会得到一个语法错误。当然,方法名还是可以的。详情请参考RFC:MatchExpression更多学习内容请访问码农到架构师的培养之路