PHP5.5~PHP7.2新特性整理官方文档:http://php.net/manual/zh/appe...1.从PHP5.5.x移植从PHP5.6.x开始使用表达式定义常量在以前的PHP版本中,您必须使用静态值来定义常量、声明属性以及为函数参数指定默认值。您现在可以使用数字表达式(包括数字、字符串文字和其他常量)为函数参数定义常量、声明属性和设置默认值。上面的程序会输出:$req:1;$选择:0;参数数量:0$req:1;$选择:2;参数数量:0$req:1;$选择:2;参数数量:1$req:1;$选择:2;参数个数:2使用...运算符进行参数扩展调用函数时,使用...运算符将数组和变量组合遍历对象扩展为函数参数。在其他编程语言中,例如Ruby,这称为串联运算符。以上该例程将输出:6usefunction和useconstuseoperators被扩展以支持在类中导入外部函数和常量。对应的结构是usefunction和useconst。上面例程会输出:42Name\Space\f使用hash_equals()比较字符串,避免时序攻击2.从PHP5.6.x移植到PHP7.0.xScalartypedeclarationScalartypedeclaration有两种模式:强制(默认)和严格模式。现在可以使用以下类型参数(无论是强制模式还是严格模式):字符串(string)、整数(int)、浮点数(float)和布尔值(bool)。飞船运算符(组合比较器)空间飞船运算符用于比较两个表达式。当$a小于、等于或大于$b时,它分别返回-1、0或1。比较的原则是遵循PHP正常的比较规则。'1';//0回声1<=>2;//-1回声2<=>1;//1//浮动回显'1.50'<=>1.5;//0echo1.5<=>2.5;//-1echo2.5<=>1.5;//1//字符串echo"a"<=>"a";//0echo"a"<=>"b";//-1echo"b"<=>"a";//1?>通过define()定义常量数组Array类型的常量现在可以通过define()定义。在PHP5.6中只能用const来定义。定义('动物',['狗','猫','鸟']);回声动物[1];//output"cat"Closure::call()Closure::call()现在有更好的性能,简洁明了临时绑定一个方法到一个对象闭包并调用它。x;};$getX=$getXCB->bindTo(newA,'A');//中间层闭包echo$getX();//PHP7+及更高版本代码$getX=function(){return$this->x;};echo$getX->call(newA);上面的例程将输出:1groupusestatement从同一名称空间导入的类、函数和常量现在可以通过单个use语句一次导入。生成器可以返回表达式该特性是基于PHP5.5构建的,引入了生成器功能。它允许在生成器函数中使用return语法返回一个表达式(但不允许返回一个引用值),你可以通过调用Generator::getReturn()方法来获取生成器的返回值,但是这个方法只能在生成器完成生成工作后调用一次。从PHP7.0.x移植到PHP7.1.x的整数除法函数intdiv()现在可以通过在类型前添加问号来使可空(Nullable)类型参数和返回类型可为空。启用此功能后,传入的参数或函数返回的结果为给定类型或null。1,"name"=>'Tom'],["id"=>2,"name"=>'Fred'],];//list()stylelist("id"=>$id1,"name"=>$name1)=$data[0];//[]风格["id"=>$id1,"name"=>$name1]=$data[0];//list()styleforeach($dataaslist("id"=>$id,"name"=>$name)){//这里有$id和$name的逻辑}//[]styleforeach($dataas["id"=>$id,"name"=>$name]){//这里有$id的逻辑和$name}从PHP7.1.x移植到PHP7.2.x新对象类??型这个新的对象类型object引入了可以逆变和协变返回任何对象类型的参数。
