今天我在這里總結下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之前的版本變量分配的內存是根據變量的值來判斷變量的類型然后再分配內存的,如果改成先聲明變量的類型就省了一步,速度自然快了不少。說到這里又小伙伴可能就會說為什么有些地方不能使用變量類型聲明了,本人的理解是如果改成和強類型語言一樣,可能和之前的版本跨度比較大,相信后續的版本會繼續完善