PHP7 於 2015 年 11 月正式釋出,本次更新可謂是 PHP 的重要里程碑, 它將帶來顯著的效能改進和新特性,並對之前版本的一些特性進行改進。本文小編將和大家一起來了解探討 PHP7 中的新特性。
1. 標量型別宣告
我們知道 PHP 是一種弱型別的程式語言, 因此沒有提供任何方法來指定輸入引數和返回值的型別,PHP7 突破了這種現狀,增加了對標量型別(int,float,string,bool)的宣告支援,增加 declare(strict_types=1) 指令宣告是否嚴格型別校驗,我們來看一段程式碼:
(strict_types=) {
$x + $y;
} add(, );
有效的型別有:class/interface name, self, array, callable, bool, float, int and string.
2. ?? ——NULL 合併運算子
PHP7 中新增了 NULL 合併運算子,不要小看這個 “??”,有了它我們就能很方便的獲取一個引數,並能在其為空的情況下提供一個預設值。如何?? 運算子左側值存在並且不為 NULL,則返回左側,否則將返回其右側值。我們還是通過下面一段程式碼來體驗一下?? 運算子的強大吧。
3. 匿名類
匿名類顧名思義沒有類名稱,其宣告和例項化是同時的,PHP7 支援通過 new class 來例項化一個匿名類,可以用來替代一些” 用後即焚” 的完整類定義。
echo ( {
{
;
}
})->myMethod();
4. 更多 Error 錯誤可以進行異常處理
PHP7 中更多的 Error 變為可捕獲的 Exception 返回給開發者,如果不進行捕獲則為 Error,如果捕獲就變為一個可在程式內處理的 Exception 。預設情況下,Error 會直接導致程式中斷,而 PHP7 則通過 try / catch 程式塊捕獲並且處理,讓程式繼續執行下去,為程式設計師提供更靈活的選擇。
程式碼示例:
nonExistFunction($arg);
這時上面的程式碼會提示錯誤 “Fatal error: Call to a member function method() on a non-object ”,並且這個致命錯誤會停止後面程式碼的繼續執行。
所以如果你想繼續執行程式碼,可以通過異常處理的方式解決:
{
nonExistFunction($arg); } (EngineException $e ) {
;
}
5. 結合比較運算子(<=>)
這個不多解釋,我們直接看示例程式碼,通過程式碼你可以很容易瞭解該運算子的作用。
{
($a < $b) ? : (($a > $b) ? : )
} {
$a <=> $b;
}
6. 定義陣列常量
過去我們在用 define() 定義常量時,資料型別只支援標量,但在 PHP7 中,支援定義陣列型別的常量。
define(‘MYCONSTANT’, array(‘a’,’b’,’c’))
PHP7 新增的特性還有很多,今天我們先介紹到這,後續會持續更新,同時也歡迎廣大 PHPer 補充,我們共同交流,共同學習,共同進步。