PHP7.0的新特性经常会被面试官问到,在平时的项目开发中运用它们也会提升一定的代码质量和代码运行性能,可见这个知识点的重要性。不过有很多人都没有去系统的了解掌握,今天我刚好系统整理了一番分享出来。
图片版
文字版
1.新增了标量类型声明和函数的返回值类型声明例如:?phpdeclare(strict_types=1)//1:严格模式0:强制模式(默认)classOrderServiceextendsBaseService{.../***所有订单详情都是通过这个入口*
param$orderNo*returnarraymixed*
throwsException*/publicfunctiongetOrderDetailByOrderNo(string$orderNo):array{$order=$this-model-getByFields([order_no=$orderNo]);if(empty($order)){return[];}return(newOrderFactory)-getOrder($order[order_type])-getOrderDetailByOrderNo($orderNo);}}2.太空船运算符(组合比较符):=例如:$c=$a=$b若$a$b,则$c=1若$a=$b,则$c=0若$a$b,则$c=-13.NULL合并运算:??PHP7之前:$c=isset($b)?$b:0;PHP7+:$c=$b??0;4.定义常量数组:define(ARR,[1,2,3])5.新增抽象语法树AST(高度解耦)PHP7之前:PHP代码-Parser语法解析-OPCODE-执行PHP7+:PHP代码-Parser语法解析-AST-OPCODE-执行6.命名空间引用优化PHP7之前:useFooLibrary\Bar\Baz\ClassA;useFooLibrary\Bar\Baz\ClassB;PHP7+:useFooLibrary\Bar\Baz\{ClassA,ClassB};7.反序列化函数Unserialize()提供更安全的过滤特性8.新增整除函数intdiv()例如:intdiv(10,3)结果:39.错误处理更友好*在PHP7+中,很多致命错误以及可恢复的致命错误,都被转换为异常来处理了。这些异常继承自Error类,此类实现了Throwable接口(所有异常都实现了这个基础接口)*PHP7+进一步方便开发者处理,让开发者对程序的掌控能力更强.因为在默认情况下,Error会直接导致程序中断,而PHP7+则提供捕获并且处理的能力,让程序继续执行下去,为程序员提供更灵活的选择10.新增匿名类通过newclass来实例化一个匿名类,可以用来替代一些用后即焚的完整类定义例如:?phpinterfaceLogger{publicfunctionlog(string$msg);}classApplication{private$logger;publicfunctiongetLogger():Logger{return$this-logger;}publicfunctionsetLogger(Logger$logger){$this-logger=$logger;}}$app=newApplication;//使用newclass创建匿名类$app-setLogger(newclassimplementsLogger{publicfunctionlog(string$msg){print($msg);}});$app-getLogger()-log(我的第一条日志);结果:我的第一条日志11.新增两个更安全的伪随机生成器函数random_bytes()和random_int()12.Closure::call()有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数例如:?phpclassA{private$x=1;}//PHP7之前版本定义闭包函数代码$getXCB=function(){return$this-x;};//闭包函数绑定到类A上$getX=$getXCB-bindTo(newA,A);echo$getX();//PHP7+代码$getX=function(){return$this-x;};echo$getX-call(newA);13.移除扩展:ereg、mssql、mysql