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

PHP8中添加了哪些有趣的新功能?

时间:2023-03-30 00:19:30 PHP

指南:PHP8会给我们一种全新的代码编写方式。尊敬的干农职工们,PHP8正式版将于2020年11月26日正式发布,届时其flash所有功能将稳定全面可用。本文在写PHP8时还处于Alpha阶段,也就是说后面还会有功能更新。以下是我总结的新特性的总结,让我们来看看这些特性对开发者意味着什么。属性毫无疑问,属性是PHP语言最大的补充。属性帮助给函数、参数、类、方法、常量、属性等添加元数据,这些东西之前是通过docblock模拟出来的,然后其他地方解析出来的。属性现在是PHP中的一等公民,可以通过编程方式访问。请看下面代码:@@Route(Http::POST,'/store/123/item')classItemCreateHandler{publicfunction__invoke(){//...}}目前PHP属性的概念还是不断发展,虽然从<code=$code;$this->body=$body;$this->headers=$headers;}}人们也习惯了这种方式。在PHP8中,可以这样简写:classResponse{publicfunction__construct(privateint$code,privatestring$body,privatearray$headers,){}}是不是变得更整洁了?matchexpression你之前可能写过非常复杂的Switch语句和表达式,比如下面的代码:switch($x){case1:$y=3;休息;情况2:$y=4中断;案例3:案例4:$y=5;休息;...default:thrownewRuntimeException('Nothappening,bud');}还是有点太长了。现在,可以使用更短的匹配表达式:$y=match($x){1=>3,2=>4,3,4=>5,...default=>thrownewRuntimeException('Nothappening,bud'),}匹配表达式可能是受ES6的启发,使得每个匹配的case只包含一个表达式,还包含一个隐式的break表达式。联合类型PHP是一种动态类型语言。使用联合类型将为参数或返回类型指定2个或更多可接受的类型。目前PHP支持两种特殊的联合类型,Type/null和array/Traversable。现在不用phpdoc来处理类型,而是使用以下代码:classNumber{privateint|float$number;publicfunctionsetNumber(int|float$number):void{$this->number=$number;}publicfunctiongetNumber():int|float{return$this->number;}}null也可以使用:publicfunctionhandle(Product|null$product):int//equalspublicfunctionhandle(?Product$product):intnamedparametersnamedparametersallowbasedonParameternamesinsteadofpassingvaluesto基于参数位置的参数。以下代码示例://位置参数json_encode($data,0,512);//命名参数json_encode(value:$data,options:0,depth:512);开发人员可以选择他们喜欢的任何一种。总结到目前为止,PHP8仍在更新中,欢迎社区提出更多改进建议。可以预见,新版本的PHP将让我们重新审视自己编写PHP代码的方式!