PHP7的一些新特性总结

耗时与php5.6相比有2.991s降到1.186s。QPS(每秒查询率)由5.6的112变为311。注意没有php6,php6是失败的作品,10年就取消了,由php5.6变到了php7。今天面试官问我用的什么版本,我说5.6她说用这么老的版本。

1.PHP的标量类型声明

PHP原来都是弱类型,方便上手,但是有的时候需要规定好的数据类型。在PHP7中就添加了变量类型的定义和函数返回类型的定义。

有int,float,string和bool。

给php文件添加了一句可选指令declare(strict_type=1);必须是文件的第一句。

1表示严格类型校验模式,0或者没有这句指令表示弱类型校验模式。

通过这句指令来使该php文件内的函数调用、语句返回都严格按照变量类型。

如果没有这一句指令,则就算定义了变量类型,也是弱类型,会像原来一样,自动匹配。

这一句只影响自己,不影响include等的其他文件。

http://hansionxu.blog.163.com/blog/static/241698109201522451148440/

这里讲的比较细

2.有很多error变成exception

PHP7有一个全局的throwable接口,部分error变成了exception,如果使用try...catch那么就会抛出exception,否则抛出error。

如果是exception,程序会继续运行下去,如果是error,则程序停止运行。

3.AST(抽象语法树)

原PHP的编译过程为:PHP代码--->Parser语法词法解析--->Opcode中间字节码--->执行

PHP7的编译过程为:PHP代码--->Parser语法词法解析--->AST抽象语法树--->Opcode中间字节码--->执行

4.Native TLS(原生线程本地存储)

PHP的多线程模式下,需要解决『线程安全』的问题,因为线程是共享进程的空间,所以线程需要构建私有空间存储私有数据。

PHP5用全局大数组,通过独有的key值来访问。PHP7采用一个全局的线程特定变量来保存key。

5.新的操作符

<=>组合比较符,如果小于,返回-1,等于返回0,大于返回1,

??合并运算符,A??B,如果A为空则为B,如果A不为空则为A。

unicode转义语法"\u{1234}"。

**为幂运算。

$a?:1;如果$a不为空则为$a,否则为1。

非变量array和string也有下标,例如array(1,2,3)[0],"abcde"[0]。

6.使用use来导入类、函数、常量,同一个文件夹下要放很多个,php5就要一个一个的use,PHP7就可以一次性导入。

7.还有一些底层的部分的修改,先不看了吧。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值