PHP7中我們應(yīng)該學(xué)習(xí)會(huì)用的新特性

PHP7于2015年11月正式發(fā)布,本次更新可謂是PHP的重要里程碑,它將帶來(lái)顯著的性能改進(jìn)和新特性,并對(duì)之前版本的一些特性進(jìn)行改進(jìn)。本文小編將和大家一起來(lái)了解探討PHP7中的新特性。
1. 標(biāo)量類型聲明
我們知道PHP是一種弱類型的編程語(yǔ)言,因此沒(méi)有提供任何方法來(lái)指定輸入?yún)?shù)和返回值的類型,PHP7突破了這種現(xiàn)狀,增加了對(duì)標(biāo)量類型(int,float,string,bool)的聲明支持,增加declare(strict_types=1)指令聲明是否嚴(yán)格類型校驗(yàn),我們來(lái)看一段代碼:
(strict_types=) {
     $x + $y;
}  add(, );
有效的類型有:class/interface name, self, array, callable, bool, float, int and string.
2. ?? ——NULL 合并運(yùn)算符
PHP7中添加了NULL合并運(yùn)算符,不要小看這個(gè)“??”,有了它我們就能很方便的獲取一個(gè)參數(shù),并能在其為空的情況下提供一個(gè)默認(rèn)值。如何??運(yùn)算符左側(cè)值存在并且不為NULL,則返回左側(cè),否則將返回其右側(cè)值。我們還是通過(guò)下面一段代碼來(lái)體驗(yàn)一下??運(yùn)算符的強(qiáng)大吧。
<?php // 獲取user參數(shù)的值(如果為空,則用'nobody') // PHP5中我們這樣來(lái)實(shí)現(xiàn): $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??運(yùn)算符更便捷: $username = $_GET['user'] ?? 'nobody'; ?>
3. 匿名類
匿名類顧名思義沒(méi)有類名稱,其聲明和實(shí)例化是同時(shí)的,PHP7 支持通過(guò) new class 來(lái)實(shí)例化一個(gè)匿名類,可以用來(lái)替代一些”用后即焚”的完整類定義。
echo ( {
     {
       ;
    }
})->myMethod();
4. 更多 Error 錯(cuò)誤可以進(jìn)行異常處理
PHP7中更多的Error變?yōu)榭刹东@的Exception返回給開(kāi)發(fā)者,如果不進(jìn)行捕獲則為Error,如果捕獲就變?yōu)橐粋€(gè)可在程序內(nèi)處理的Exception。默認(rèn)情況下,Error會(huì)直接導(dǎo)致程序中斷,而PHP7則通過(guò)try / catch程序塊捕獲并且處理,讓程序繼續(xù)執(zhí)行下去,為程序員提供更靈活的選擇。
代碼示例:
nonExistFunction($arg);
這時(shí)上面的代碼會(huì)提示錯(cuò)誤“Fatal error: Call to a member function method() on a non-object ”,并且這個(gè)致命錯(cuò)誤會(huì)停止后面代碼的繼續(xù)執(zhí)行。
所以如果你想繼續(xù)執(zhí)行代碼,可以通過(guò)異常處理的方式解決:
{
    nonExistFunction($arg);  }  (EngineException $e ) {
     ;
}
5. 結(jié)合比較運(yùn)算符(<=> )
這個(gè)不多解釋,我們直接看示例代碼,通過(guò)代碼你可以很容易了解該運(yùn)算符的作用。
{
    ($a < $b) ?  : (($a > $b) ?  : )
}  {
    $a <=> $b;
}
6. 定義數(shù)組常量
過(guò)去我們?cè)谟胐efine()定義常量時(shí),數(shù)據(jù)類型只支持標(biāo)量,但在PHP7中,支持定義數(shù)組類型的常量。
define('MYCONSTANT', array('a','b','c'))
PHP7新增的特性還有很多,今天我們先介紹到這,后續(xù)會(huì)持續(xù)更新,同時(shí)也歡迎廣大PHPer補(bǔ)充,我們共同交流,共同學(xué)習(xí),共同進(jìn)步。















 
 
 








 
 
 
 