真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP7有哪些新特性以及做了哪些改進-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關PHP7有哪些新特性以及做了哪些改進,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、成都網(wǎng)站設計、成都做網(wǎng)站、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。

PHP 7 是一個具有里程碑意義的版本,它不僅增加了很多新特性,讓代碼編寫更加靈活,還改進了底層設計,提高了 PHP 執(zhí)行效率。

PHP 7 新特性

PHP 7 中的新特性主要有以下幾點:

標量類型聲明。

函數(shù)返回值類型聲明。

新增 null 合并運算符。

新增組合比較符。

支持通過 define() 定義常量數(shù)組。

新增支持匿名類。

支持 Unicode codepoint 轉(zhuǎn)譯語法。

更好的閉包支持。

為 unserialize() 提供過濾。

新增加 IntlChar 類。

支持 use 語句從同一 namespace 導入類、函數(shù)和常量。

新增整除函數(shù) intdiv()。

session_start() 支持接收數(shù)組參數(shù)。

PHP 7 的改進和優(yōu)化

相較于以前的版本,PHP 7 在語言語法層面和底層架構層面都有一些改進:

在語法層面的改進主要是增加了一些新特性、移除了一些擴展、改變了錯誤異常處理等。

在底層結構方面,改變了存儲各種變量的 Zval 和 Zend_String 結構體、優(yōu)化了 Zend Array 的 HashTable、改進了函數(shù)的調(diào)用機制等。

尤其是底層結構的改進,大幅提升了 PHP 7 的執(zhí)行效率,使得其執(zhí)行速度比 PHP 5 高出一倍左右。

PHP 7 引入了嚴格模式開關

PHP 是一個弱類型的語言,不過在 PHP 7 中支持變量類型的定義,引入了一個開關指令declare(strict_type=1);。這個指令一旦開啟,就會強制當前文件下的程序遵循嚴格的函數(shù)傳參類型和返回類型。不開啟 strict_type,PHP 將會嘗試轉(zhuǎn)換成要求的類型;開啟之后,PHP 不再做類型轉(zhuǎn)換,類型不匹配就會拋出錯誤。

要使用嚴格模式,一個 declare 聲明指令必須放在文件的頂部。這意味著嚴格聲明標量是基于文件可配的。這個指令不僅影響參數(shù)的類型聲明,還影響函數(shù)的返回值聲明。

PHP 7 改進了錯誤處理機制

另外,在 PHP 7 中,很多致命錯誤以及可恢復的致命錯誤都被轉(zhuǎn)換為異常來處理了。這些異常繼承自 Error 類,此類實現(xiàn)了 Throwable 接口(所有異常都實現(xiàn)了這個基礎接口)。

這也意味著,當發(fā)生錯誤的時候,以前代碼中的一些錯誤處理的代碼將無法被觸發(fā)。因為在 PHP 7 版本中,已經(jīng)使用拋出異常的錯誤處理機制了。(如果代碼中沒有捕獲 Error 異常,就會引發(fā)致命錯誤)。

PHP 7 優(yōu)化了 Zval

在 2013 年的時候,惠新宸和 Dmitry(PHP 語言內(nèi)核開發(fā)者之一)就曾經(jīng)在 PHP 5.5 的版本上做過一個 JIT(Just In Time,即時編譯,一種軟件優(yōu)化技術)的嘗試。

PHP 5.5 原來的執(zhí)行流程是將 PHP 代碼通過詞法和語法分析編譯成 opcode 字節(jié)碼,然后 Zend 引擎讀取這些 opcode 指令,逐條解析執(zhí)行。他們在 opcode 環(huán)節(jié)后又引入了類型推斷(TypeInf),然后通過 JIT 生成 ByteCodes 再執(zhí)行。

采用這種技術優(yōu)化,PHP 的效率在實際項目中并沒有取得明顯的提升,于是他們重新設計了 PHP 的底層語言結構。Zval 是存儲 PHP 中變量的載體,是一個 C 語言實現(xiàn)的結構體(struct),PHP 5 的 Zval 在內(nèi)存中占據(jù) 24 個字節(jié),而在 PHP 7 中優(yōu)化后的 Zval 只占 16 個字節(jié),這樣變量的存儲變得非常簡單和高效。

PHP 7 優(yōu)化了數(shù)組

PHP 7 優(yōu)化了數(shù)組的 HashTable 實現(xiàn),PHP 5 的數(shù)組存儲形式是一個支持雙向鏈表的 HashTable,不僅支持通過數(shù)組的 key 來做 hash 映射訪問元素,也能通過 foreach 以訪問雙向鏈表的方式遍歷數(shù)組元素。

當我們通過 key 值訪問一個元素內(nèi)容的時候,有時需要 3 次的指針跳躍才能找對需要的內(nèi)容。最重要的一點是,這些數(shù)組元素的存儲是分散在各個不同的內(nèi)存區(qū)域的,在 CPU 讀取的時候,因為它們很可能不在同一級緩存中,導致 CPU 不得不到下級緩存甚至內(nèi)存區(qū)域查找,從而引起 CPU 緩存命中下降,進而增加更多的耗時。

優(yōu)化后的 Zend Array 較大的特點是整塊的數(shù)組元素和 hash 映射表全部連接在一起,被分配在同一塊內(nèi)存中。如果是遍歷一個整型的簡單類型數(shù)組,效率會非??欤驗閿?shù)組元素(Bucket)本身是連續(xù)分配在同一塊內(nèi)存里的,并且數(shù)組元素的 Zval 會把整型元素存儲在內(nèi)部,也不再有指針外鏈,全部數(shù)據(jù)都存儲在當前內(nèi)存區(qū)域內(nèi)。

當然,最重要的是它能夠避免 CPU 緩存命中率下降。

PHP 7 改進了函數(shù)調(diào)用

PHP 7 還改進了函數(shù)的調(diào)用機制,通過優(yōu)化參數(shù)傳遞的環(huán)節(jié)減少了一些指令,提高執(zhí)行效率。

看完上述內(nèi)容,你們對PHP7有哪些新特性以及做了哪些改進有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)站名稱:PHP7有哪些新特性以及做了哪些改進-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/djidih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部