顺风车运营研发团队王坤发布给21CTO公众号(https://mp.weixin.qq.com/s/ph...)PHP是一个跨平台的开源语言和迄今为止最流行的Web开发语言,世界上超过80%的网站由PHP提供支持。从RasmusLerdorf于1994年创建至今已有20多年,经历了6个主要版本。下面我们来了解一下PHP7带来的新特性。2015年夏天,备受瞩目的PHP7发布了第一个Alpha版本。之后,经过大约3个Beta版本和8个RC版本,PHP7于2016年1月正式发布。PHP7是PHP的一个非常重要的版本。与PHP5.x版本相比,有非常大的创新,尤其是在性能方面。如果读者的网站使用的是PHP5.x,那么使用PHP7几乎可以无成本地提高一倍的性能。感谢开发者!1、PHP7有多快!下面我们来测试一下PHP7的性能提升了多少。在本地环境安装PHP5.5.38和PHP7的第一个正式版7.0.2和7.1.0,编译参数相同,以CLI方式运行PHP源码中的benchmark脚本。(1)测试环境为本地搭建的vagrant虚拟机,操作系统CentOS7,单核CPU2.00GHz,内存1GB。(2)基准测试指标qTime——执行时间,单位秒;q%rel,gain——相比上一版本节省的执行时间;q%abs,gain——脚本与PHP5.5.38相比节省的执行时间。测试结果如表1-1所示。表1-1测试结果从上面的测试结果可以看出,PHP7.1.0的基准性能几乎是PHP5.5.38的3倍,启用opcache时更是高达4.4倍。这是一个非常显着的改进,这些性能改进是如何实现的,本书后续章节会一一介绍。注:此处测试为纯CPU基准测试,5次运行的平均值,不包括其他测试,实际项目或其他运行环境可能不同。2.PHP7令人眼花缭乱的新特性除了性能上的巨大提升,PHP7还增加了许多新特性,比如飞船运算符、标量类型声明、返回值类型声明、全局throwable接口、抽象语法树等。让我们下面分别介绍一下。(1)飞船运算符飞船运算符用于比较两个表达式。例如,当$a小于、等于或大于$b时,它分别返回-1、0或1。比较原则遵循PHP的正常比较规则。1;//0回声1<=>2;//-1回声2<=>1;//1//浮动回显1.5<=>1.5;//0echo1.5<=>2.5;//-1echo2.5<=>1.5;//1//字符串echo"a"<=>"a";//0echo"a"<=>"b";//-1echo"b"<=>"a";//1(2)标量类型声明和返回值类型声明PHP7可以声明以下类型的参数:字符串(string)、整型(int)、浮点型(float)和布尔型(bool)。注意参数类型声明不受默认模式和严格模式约束,可以声明。在默认模式下,当传入的参数不符合声明的类型时,会先尝试进行类型转换;在严格模式下,会直接报错。例如下面的代码:num+1;};$test=$f->bindTo(newTest,'Test');echo$test();//2Closure::call()是PHP7新加入的,一个闭包对象可以临时绑定到$this调用对象并调用它:num+1;};echo$f->call(newTest);//2(8)Intdiv函数PHP7也新增了一个除数函数,代码中不需要手动开启:
