PHP7的新特性

2021-09-13 10:08:24 字數 1181 閱讀 2277

php7 從發布到現在已經有快三年的時間了,現在已經發展到 php7.2.9 版本了。它的發布給 php 帶來了很大的效能提公升,這主要是得益於 php 對 zend 引擎的深度優化,同時還降低了 php 對系統的資源占用。

主要的變化有以下幾點:

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

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

php7 中使用native tls(執行緒區域性儲存)來儲存執行緒的資源池,簡單地講就是通過__thread標識乙個全域性變數,這樣這個全域性變數就是執行緒獨享的了,不同執行緒的修改不會相互影響。

php7中可以指定函式引數及返回值的型別。

php7 將引用計數轉移到了具體的value中,這樣更合理。除此之外,zval結構的大小也從 24byte 少到了 16byte,這是 php7 能夠降低系統資源占用的乙個優化點所在。

php5.x 中很多操作會直接丟擲 error 錯誤,php7 中將多數錯誤改為了異常丟擲,這樣一來就可以通過try catch捕捉到。

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

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

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

php7的新特性

截止到目前為止,php官方已經發布了php7的rc5版本,預計在11月份左右會發布第乙個正式版本!現在來說php7的重大特性肯定已經是定型了,不會再有什麼變動了。後續一些版本的迭代主要也就是修修bug,優化之類的。下面就來說話我們一直期待的php7.0新特徵吧。1.標量引數型別宣告 現在支援字串 s...

php7的新特性

php7新特性 太空船操作符 echo 1 1 0 echo 1 2 1 echo 2 1 1 型別宣告 declare strict types 1 strict types 1表示開啟嚴格模式 function sum int.ints int 3.null合併操作符 page 0 page?0...

PHP7 常用新特性

1.標量型別宣告 php是一種弱型別的程式語言,因此沒有提供任何方法來指定輸入引數和返回值的型別,php7突破了這種現狀,增加了對標量型別 int,float,string,bool 的宣告支援,增加declare strict types 1 指令宣告是否嚴格型別校驗,來看一段 declare s...