今天我在这里总结下PHP7主要的新特性。
1.类型声明
做过php开发的小伙伴们都知道,php7以前的版本变量是不需要声明类型的,函数返回值也是不需要声明类型的,总之,在我们的脑海中就没有这么回事。可能有小伙伴好奇如果声明了类型会不会报错呢?那我们先来一睹为快(下面的代码运行环境linux+php5.4+nginx)
1
2
3
|
int $a = 0;
string $b = ‘abc‘ ;
echo $a ;
|
输出结果:
从输出结果看会报语法错误,看样子不能这么写,那我们看下函数的参数能不能声明参数。
1
2
3
4
5
6
7
|
function sumInt(int $a ,int $b ) {
return $a + $b
} $a = 1;
$b = 2;
sumInt( $a , $b );
|
输出结果:
发现报错,说明不能这么写,我们再仔细看下报错,意思是参数的类型必须是类的一个对象
再看个例子:
1
2
3
4
5
6
7
8
9
10
|
class Cat{
} function sumInt(Cat $a ) {
var_dump( $a );
} $a = new Cat();
sumInt( $a );
|
输出结果如下:
发现可以正常输出,发现变量换成数组也是可以的,这里就不举例说明了。
那接下来我们再看下php7 下同样的代码会怎么样?
1
2
3
|
int $a = 0;
string $b = ‘abc‘ ;
echo $a ;
|
输出结果如下:
发现同样会报错,看来我们的php7对这种变量类型声明还是不支持,那我们再看下函数的参数是否可以设置参数的类型
1
2
3
4
5
6
7
|
function sumInt(int a,int b) {
return $a + $b
} $a = 1;
$b = 2;
sumInt( $a , $b );
|
输出结果是3,说明php7支持这种类型声明,经实践变量的类型是类的对象或者数组也是可以的
可能有小伙伴比较好奇为什么php7会加上了类型声明,加上了但又不像强类型语言那样,可以直接给任何变量设置类型,本人的理解是php7之所以加上类型声明是追求更快的速度,为什么这么说呢?我们都知道任何一个变量都需要一定的空间存储,那么就会涉及到变量内存分配的问题,php7之前的版本变量分配的内存是根据变量的值来判断变量的类型然后再分配内存的,如果改成先声明变量的类型就省了一步,速度自然快了不少。说到这里又小伙伴可能就会说为什么有些地方不能使用变量类型声明了,本人的理解是如果改成和强类型语言一样,可能和之前的版本跨度比较大,相信后续的版本会继续完善