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中文網其他相關文章!