首頁  >  文章  >  後端開發  >  php7中新特性的總結

php7中新特性的總結

不言
不言原創
2018-08-29 10:41:412306瀏覽

這篇文章帶給大家的內容是關於php7中新特性的總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

PHP7 從發佈到現在已經有快三年的時間了,現在已經發展到 PHP7.2.9 版本了。它的發布為 PHP 帶來了極大的效能提升,這主要是因為 PHP 對 Zend 引擎的深度最佳化,同時也降低了 PHP 對系統的資源佔用。

主要的變化有以下幾點:

  • 抽象語法樹

在PHP之前的版本中,PHP程式碼在語法解析階段直接產生了ZendVM 指令,也就是在zend_language_parser.y 中直接產生opline 指令,這使得編譯器與執行器耦合在一起。

PHP7 中增加了抽象語法樹,首先是將PHP程式碼解析產生抽象語法樹,然後將抽象語法樹編譯為 ZendVM 指令。抽象語法樹的加入使得PHP 的編譯器與執行器很好地隔離開,編譯器不需要關心指令的生成規則,然後執行器根據自己的規則將抽象語法樹編譯為對應的指令,執行器同樣不需要關心該指令的語法規則是什麼樣子的。

  • Native TLS

PHP7 中使用Native TLS(執行緒局部儲存)來保存執行緒的資源池,簡單地講就是透過__thread 來識別一個全域變量,這樣這個全域變數就是執行緒獨享的了,不同執行緒的修改不會互相影響。

  • 指定函數參數、傳回值型別

PHP7中可以指定函數參數及傳回值的型別。

  • zval 結構的變化

PHP7 將引用計數轉移到了具體的 value 中,這樣更合理。除此之外,zval 結構的大小也從 24byte 少到了 16byte,也就是 PHP7 能夠降低系統資源佔用的最佳化點。

  • 異常處理

PHP5.x 中很多運算會直接拋出error 錯誤,PHP7 中將多數錯誤改為異常拋出,這樣一來就可以透過try catch 來捕捉。

  • HashTable 的變化

PHP7 中HashTable 有非常大的變化,HashTable 結構的大小從72byte 減少到了56byte,同時,陣列元素Bucket 結構也從72byte 減少到了32byte。

  • 執行器

在PHP7 中不再採用傳參的方式,而是將execute_dataopline 透過暫存器來進行存儲,避免了傳參導致的頻繁出入堆疊操作,同時,暫存器相比記憶體的存取速度更快。

  • 新的參數解析方式

PHP5.x 透過zend_parse_parameters() 解析函數的參數,PHP7 提供了另外一種方式,同時保留了原來的方式,但是新的解析方式速度更快。

相關建議:

PHP7 新功能 簡介

PHP7新功能介紹

####################################################### ######

以上是php7中新特性的總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn