PHP7 带来显著的性能改进和新特性,并对之前版本的一些特性进行改进。本文将和大家一起来了解探讨 PHP7 中的新特性。
1.标量类型声明
我们知道PHP是一种弱类型的编程语言,因此没有提供任何方法来指定输入参数和返回值的类型,PHP7突破了这种现状,增加了对标量类型(int,float,string,bool)的声明支持,增加declare(strict_types=1)指令声明是否严格类型校验,我们来看一段代码:
123456 | declare(strict_types=1)functionadd(int$x,int$y):int{return$x+$y;}echo add(1,2);//int(7) |
有效的类型有:class/interface name、self、array,、callable、bool、float、int 和 string。
2. NULL合并运算符
PHP7中添加了NULL合并运算符,不要小看这个“??”,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。如何??运算符左侧值存在并且不为NULL,则返回左侧,否则将返回其右侧值。我们还是通过下面一段代码来体验一下??运算符的强大吧。
123456 | <?php// 获取user参数的值(如果为空,则用'nobody')// PHP5中我们这样来实现:$username=isset($_GET['user'])?$_GET['user']:'nobody';// PHP7中,使用??运算符更便捷:$username=$_GET['user']??'nobody';??> |
3.匿名类
顾名思义没有类名称,其声明和实例化是同时的,PHP7 支持通过 new class 来实例化一个匿名类,可以用来替代一些”用后即焚”的完整类定义。
123456 | echo(newclass(){publicfunctionmyMethod(){return"Hello!";}})->myMethod();//Result: Hello! |
除此之外,介绍一下
PHP 原生 DOM 对象操作 XML
对于操作XML类型文件,PHP内置有一套DOM对象可以进行处理。对XML的操作,从创建、添加到修改、删除都可以使用DOM对象中的函数来进行。
创建
创建一个新的XML文件,并且写入一些数据到这个XML文件中。
1234567891011121314151617181920212223242526272829303132333435 | /** 创建xml文件*/$info=array(array('obj'=>'power','info'=>'power is shutdown'),array('obj'=>'memcache','info'=>'memcache used than 90%'),array('obj'=>'cpu','info'=>'cpu used than 95%'),array('obj'=>'disk','info'=>'disk is removed'));//用来写入的数据$dom=newDOMDocument('1.0');$dom->formatOutput=true;//格式化$eventList=$dom->createElement('EventList');//创建根节点EventList$dom->appendChild($eventList);//添加根节点for($i=0;$i<count($info);$i++){$event=$dom->createElement('event');//创建节点event$text=$dom->createTextNode('PHP'.$i);//创建文本节点,值为PHP0,PHP1...$event->appendChild($text);//将文本节点添加到节点event,做为节点event的值$attr_obj=$dom->createAttribute('obj');//创建属性obj$attr_obj->value=$info[$i]['obj'];//为obj属性赋值$event->appendChild($attr_obj);//将obj属性添加到event节点中,做为event节点的属性$attr_info=$dom->createAttribute('info');$attr_info->value=$info[$i]['info'];$event->appendChild($attr_info);$eventList->appendChild($event);//将event节点添加到根节点EventList中}//echo $dom->saveXML();$dom->save('./t.xml');//保存信息到当前目录下的t.xml文件中 |
上面的代码段可以创建一个XML文件,并添加一些信息到这个文件中,包括值和属性,最终形成的文件为当前目录下的t.xml,可以看一下它的内容。
1234567 | <?xml version="1.0"?><EventList><event obj="power"info="power is shutdown">PHP0</event><event obj="memcache"info="memcache used than 90%">PHP1</event><event obj="cpu"info="cpu used than 95%">PHP2</event><event obj="disk"info="disk is removed">PHP3</event></EventList> |
读取XML信息&添加新的属性
以上一节创建的t.xml文件为操作对象,读取出t.xml文件中的信息,并给节点添加一个新的属性count,其值为1。
1234567891011121314 | /** 读取xml文件信息,并添加新的属性*/$dom=newDOMDocument('1.0');$dom->load('./t.xml');//加载要操作的文件$list=$dom->getElementsByTagName('event');//获取event节点列表foreach($list as$item){$attr_obj=$item->getAttribute('obj');//获取属性obj的值$attr_info=$item->getAttribute('info');echo"<pre>Object:$attr_obj;Info:$attr_info;Value:{$item->nodeValue}</pre>";$item->setAttribute('count',1);//添加新的属性count=1}$dom->save('./t.xml');//保存修改 |