首頁 >後端開發 >PHP問題 >php是如何解釋的

php是如何解釋的

silencement
silencement原創
2019-09-27 10:31:012482瀏覽

php是如何解釋的

php會呼叫編譯函數zend_compile_file()來進行編譯。這個函數的具體實現其實是包含兩個主要過程的:詞法分析(Lex實現),語法分

析(Yacc實現)。執行完這個函數之後:php腳本的編譯就算結束了。這個函數的輸入是:php腳本文件,而輸出則是op_array.簡單一

點說:編譯過程就是把腳本給解析成一條條php虛擬機可以處理的指令,而op_array就是這些指令做成的一個array而已(這很類似一些

編譯型語言編譯產生的組譯程式碼了,也是一條條的指令)。

之後php虛擬機會呼叫zend_execute()這個函數來執行。函數的輸入就是上邊編譯階段產生的op_array,在這裡他會解析每個指令並進

#行處理。由於op指令一共有150左右,所以它需要處理這150中指令。這裡會產生一個很有趣的問題:它是如何處理這150種指令的

呢?首先每條指令都是有對應的處理器來處理的。所以:虛擬機會依據op_array中各條指令的型別來分送給回應的處理器來進行處

#理。

以上是php是如何解釋的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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