宝哥软件园

php7新特性的理解和比较总结

编辑:宝哥软件园 来源:互联网 时间:2021-08-26

1.空合并运算符(?)

语法: 如果变量存在且值不为空值,它就会返回自身的值,否则返回它的第二个操作数。

//php7以前如果判断如果(空($ _ GET[' param '])){ $ param=1;} else { $ param=$ _ GET[' param '];} //php7以前三元运算符$param=空($_GET['param'])?1 : $ _ GET[' param '];//PHP7空合并运算符$param=$_GET['param']?1;//12.定义()定义常量数组

//php7以前define('CONTENT ',' hello world ');echo CONTENT//hello world//PHP7 define(' ANIMALS ',[ 'dog ',' cat ',' bird ']);回声动物[2];//小鸟//PHP7类外也可使用常数来定义常量常量常量='你好世界'回声常数;//你好,世界3 .组合比较符(=)

组合比较符用于比较两个表达式。当一美元小于、等于或大于b美元时它分别返回-1、0或1.比较的原则是沿用服务器端编程语言(专业超文本预处理器的缩写)的常规比较规则进行的。

/整数回声1=1;//0回声1=2;//-1回声2=1;//1 //浮点数回声1.5=1.5;//0回声1.5=2.5;//-1回声2.5=1.5;//1 //字符串echo ' a '=' a//0 echo " a "=" b ";///-1e CHO ' b '=' a ';//14.变量类型声明

两种模式: 强制(默认)和严格模式。可以使用下列类型参数:字符串、int、float、bool

//.操作符: 表示这是一个可变参数php5.6 .及以上的版本可使用: 函数定义的时候变量前使用。函数intSum(int.$ ints){ return array _ sum($ ints);} var_dump(intSum(2,' 3.5 ');//5 //严格模式//模式声明:declare(strict _ types=1);默认情况值为0,值为一代表为严格校验的模式declare(strict _ type=1);函数add(int $a,int $ b){ return $ a $ b;} var_dump(add(2,' 3.5 ');//致命错误:未捕获的类型错误:传递给添加()的参数2必须是integer5类型。返回值类型声明

增加返回类型声明的支持。类似于参数类型声明。(用法在函数定义的后面加:类型名)

//有效的返回类型declare(strict _ type=1);函数GetInt(int $ value): int { return $ value;}打印(GetInt(6));//6//无效返回类型declare(strict _ type=1);函数getNoInt(int $ value): int { return $ value ' 2.5 ';}打印(GetNoint(6));//致命错误:未捕获类型错误: getNoInt()的返回值必须是整数6类型。匿名类

允许新类别{}创建一个匿名的对象。

?php //php7以前接口实现用户界面{公共函数得到折扣率();}类VipUser实现了用户{ //折扣系数私人$折扣=0.6;盛大的公共集会折扣率(){返回$ this-折扣率;} } class Goods { private $ price=200;private $ objectVipUser//用户接口VipUser类实现公共函数getUserData($ User){ $ this-objectVipUser=$ User;$折扣价=$ this-objectVipUser-Get折扣价();"回声"商品价格:'.$这个价格* $折扣;} } $ display=new Goods();//常规实例化接口实现对象$display -getUserData(新的VipUser);//商品价格:120?php //php7创建一个匿名的对象用户界面{公共函数得到折扣率();}类商品{ private $ price=200 private $ objectVipUser公共函数getUserData($ User){ $ this-objectVipUser=$ User;$折扣价=$ this-objectVipUser-Get折扣价();"回声"商品价格:'.$这个价格* $折扣;} } $ display=new Goods();//新匿名对象实现用户接口$display -getUserData(新类实现用户{ private $折扣=0.6;盛大的公共集会折扣率(){返回$ this-折扣率;}});//商品价格:1207.Closure:call()

Closure:call()方法被添加为一个简短的方式来临时绑定一个对象作用域到一个闭包并调用它。与PHP5的bindTo相比。它的性能要快得多。

?php //php7以前A类{ private $属性=' hello world } $ getClosure=function(){ return $ this-attribute;};$ GetAttribute=$ GetClution-BindTo(新的A,‘A’);//中间层闭包echo $ GetAttribute();//你好世界?php //PHP7类a { private $ attribute=' hello world ';} $ getClosure=function(){ return $ this-attribute;};echo $getClosure-call(新a);//你好,世界8 .未序列化()

未序列化()函数:过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)类A { public $ name=' admin _ a} B类{ public $ name=' admin _ b } $ ObJa=new A();$objB=新b();$ serializedObjA=serialize($ ObJa);$ serializedObjB=serialize($ ObJb);//默认行为是接收所有类;第二个参数可以忽略$ DataA=unserialize($ SerializedBja,[' allowed _ class '=true]);var _ dump($ DataA);//对象(A)# 3(1){[' name ']=string(7)' admin _ A ' }//如果允许的类设置为假的,非系列化的会将所有对象转换为_ _ PHP _不完整_类对象$ DataA=unserialize($ SerializedBja,[' allowed _ class '=false]);var _ dump($ DataA);//对象(_ PHP _ Uncompleted _ Class)# 4(2){[' _ _ PHP _ Uncompleted _ Class _ Name ']=字符串(1) 'A' ['name']=字符串(7)“admin _ a”}//转换所有对象到_ _ PHP _不完整_类对象,除了对象B ' $ DataB=unserialize($ SerializedObj,[' allowed _ class '=[' B ']]);var _ dump($ DataB);//对象(B)# 3(1){[' name ']=string(7)' admin _ B ' } 9 .IntlChar

IntlChar:提供了一些可用于访问统一码字符信息的实用方法的访问。注意:必须安装国际的扩展才能使用!

var _ dump(intlchar :代码点_ MAX);//int(1114111)echo ' br ';var _ dump(int lchar :3360 char name(' '));//string(9)' PLUS SIGN ' echo ' br ';var _ dump(int lchar :3360 is unct('?'));//布尔(真)10 .CSPRNG

CSPRNG函数提供一种简单的机制来生成密码的随机数。

random_bytes() -加密生存被保护的伪随机字符串。

random_int() -加密生存被保护的伪随机整数。

$ bytes=random _ bytes(8);echo(bin2 hex($ bytes));//随机2073 a 110 a2 E3 c 497回声' br ';echo(random_int(1,999));//随机786 echo ' br print(random _ int(-999,-1));//随机-35711.使用语句

可以使用单个使用语句从相同的命名空间导入类,函数和常量,而不是使用多个使用语句。

//PHP7之前使用一些命名空间类a;使用一些命名空间 ClassB使用一些命名空间ClassC作为c;使用函数某些命名空间 fn _ a;使用函数某些命名空间 fn _ b;使用函数某些命名空间 fn _ c;请使用const some namespace ConstA请使用const some namespace ConstB使用const some namespace ConstC//PHP7之后使用一些命名空间{ClassA,ClassB,ClassC作为c };使用函数一些命名空间{fn_a,fn_b,fn _ c };使用const some 命名空间{ConstA,ConstB,ConstC };12.新生儿同种免疫性血小板减少性紫癜

新增加intp()函数,接收两个参数,返回值为第一个参数除于第二个参数的值并取整。

echo intp(8,4);//2echo intp(10,4);//2echo intp(5,10);//013.PHP7错误处理

PHP7改变了大多数错误的报告方式。不同于PHP5的传统错误报告机制,现在大多数错误被作为错误异常抛出。

这种错误异常可以像普通异常一样被尝试/捕捉块所捕获。如果没有匹配的尝试/捕捉块,则调用异常处理函数(由set_exception_handler()注册)进行处理。

如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(致命错误)。

错误类并不是从例外类扩展出来的,所以用捕获(异常$ e){ 0.} 这样的代码是捕获不到错误的。你可以用捕获(错误$ e){ 0.} 这样的代码,

或者通过注册异常处理函数(set_exception_handler())来捕获错误。

?php //php7以前自定义异常处理类getException扩展了异常{公共函数错误消息(){返回'错误的信息$this-getMessage().英国铁路公司错误的代码$ this-GetCode();} }尝试{ $ num=10 if($ num 1)}抛出新的getException($num,404);} } catch(GetException $ e){ echo $ e-ErrorMSg();}?php //php7异常处理尝试{ test();}catch(错误$ e){ echo $ e-Getmessage();//调用未定义的函数测试()}

更多资讯
游戏推荐
更多+