php7新特性是什么?在php7中由于修改了底層引擎大部分代碼,以及通過(guò)各種方式提高php的性能,所以在php7中也增加了一些新的語(yǔ)法,這些語(yǔ)法的使用也能對(duì)提高性能有幫助。下面給大家簡(jiǎn)單介紹一些,希望對(duì)你們有所幫助。
php新功能總結(jié)
改進(jìn)的性能 – 將phpng代碼合并到php7中,速度是php 5的兩倍。降低內(nèi)存消耗 – 優(yōu)化的php 7使用較少的資源。標(biāo)量類(lèi)型聲明 – 現(xiàn)在可以強(qiáng)制執(zhí)行參數(shù)和返回類(lèi)型。一致的64位支持 – 對(duì)64位體系結(jié)構(gòu)機(jī)器的一致支持。改進(jìn)了異常層次 – 異常層次得到了改進(jìn)許多致命的錯(cuò)誤轉(zhuǎn)換為例外 – 例外范圍增加,涵蓋許多致命的錯(cuò)誤轉(zhuǎn)換為例外。安全隨機(jī)數(shù)發(fā)生器 – 增加新的安全隨機(jī)數(shù)發(fā)生器api。已棄用的sapi和擴(kuò)展已刪除 – 各種舊的和不受支持的sapi和擴(kuò)展從最新版本中刪除??蘸喜⑦\(yùn)算符(?) – 添加了新的空合并運(yùn)算符。返回和標(biāo)量類(lèi)型聲明 – 支持所添加的返回類(lèi)型和參數(shù)類(lèi)型。匿名類(lèi) – 支持匿名添加。零成本斷言 – 支持零成本斷言增加。1、標(biāo)量參數(shù)類(lèi)型聲明
可以使用字符串(string), 整數(shù) (int), 浮點(diǎn)數(shù) (float), 以及布爾值 (bool),來(lái)聲明函數(shù)的參數(shù)類(lèi)型與函數(shù)返回值;以前只支持類(lèi)名、接口、數(shù)組及callable兩種風(fēng)格:強(qiáng)制轉(zhuǎn)換模式(默認(rèn))與嚴(yán)格模式
declare(strict_types=1);
function add(int $a, int $b): int {
return $a+$b;
}
echo add(1, 2);
echo add(1.5, 2.6);php5是無(wú)法執(zhí)行上面代碼的,php7執(zhí)行的時(shí)候會(huì)先輸出一個(gè)3和一個(gè)報(bào)錯(cuò)( argument 1 passed to add() must be of the type integer, float given);
標(biāo)量類(lèi)型聲明 有兩種模式: 強(qiáng)制 (默認(rèn)) 和 嚴(yán)格模式。
declare(strict_types=1),必須放在文件的第一行執(zhí)行代碼,當(dāng)前文件有效!
2、set_exception_handler() 不再保證收到的一定是 exception 對(duì)象
在 php 7 中,很多致命錯(cuò)誤以及可恢復(fù)的致命錯(cuò)誤,都被轉(zhuǎn)換為異常來(lái)處理了。 這些異常繼承自 error 類(lèi),此類(lèi)實(shí)現(xiàn)了 throwable 接口 (所有異常都實(shí)現(xiàn)了這個(gè)基礎(chǔ)接口)。
php7進(jìn)一步方便開(kāi)發(fā)者處理, 讓開(kāi)發(fā)者對(duì)程序的掌控能力更強(qiáng). 因?yàn)樵谀J(rèn)情況下, error會(huì)直接導(dǎo)致程序中斷, 而php7則提供捕獲并且處理的能力, 讓程序繼續(xù)執(zhí)行下去, 為程序員提供更靈活的選擇。
3、新增操作符“<=>”
語(yǔ)法:
$c = $a <=> $b如果$a > $b, $c 的值為1
如果$a == $b, $c 的值為0
如果$a < $b, $c 的值為-1
4、新增操作符“”
如果變量存在且值不為null, 它就會(huì)返回自身的值,否則返回它的第二個(gè)操作數(shù)。
//原寫(xiě)法
$username = isset($_get['user]) ? $_get['user] : 'nobody';
//現(xiàn)在
$username = $_get['user'] 'nobody';
5.define() 定義常量數(shù)組
define('arr',['a','b']);
echo arr[1];// a6、ast: abstract syntax tree, 抽象語(yǔ)法樹(shù)
ast在php編譯過(guò)程作為一個(gè)中間件的角色, 替換原來(lái)直接從解釋器吐出opcode的方式, 讓解釋器(parser)和編譯器(compliler)解耦, 可以減少一些hack代碼, 同時(shí), 讓實(shí)現(xiàn)更容易理解和可維護(hù).
php5 : php代碼 -> parser語(yǔ)法解析 -> opcode -> 執(zhí)行
php7 : php代碼 -> parser語(yǔ)法解析 -> ast -> opcode -> 執(zhí)行
7、匿名函數(shù)
$anonymous_func = function(){return 'function';};
echo $anonymous_func(); // 輸出function8、unicode字符格式支持(echo “\u{9999}”)
9、unserialize 提供過(guò)濾特性
防止非法數(shù)據(jù)進(jìn)行代碼注入,提供了更安全的反序列化數(shù)據(jù)。
10、命名空間引用優(yōu)化
// php7以前語(yǔ)法的寫(xiě)法
use foolibrary\bar\baz\classa;
use foolibrary\bar\baz\classb;
// php7新語(yǔ)法寫(xiě)法
use foolibrary\bar\baz\{ classa, classb};