4 回答

TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊
PHP是一種解釋型語言??梢越忉孭HP的二進(jìn)制文件已編譯,但是您編寫的文件卻被解釋。
您可以在Wikipedia頁面上看到更多有關(guān)口譯語言的信息

TA貢獻(xiàn)1807條經(jīng)驗 獲得超9個贊
都。PHP被編譯為中間字節(jié)碼,然后由運行時引擎解釋。
PHP編譯器的工作是解析您的PHP代碼,并將其轉(zhuǎn)換為適合運行時引擎的形式。其任務(wù)包括:
忽略評論
解析變量,函數(shù)名稱等,并創(chuàng)建符號表
構(gòu)造程序的抽象語法樹
寫字節(jié)碼
根據(jù)您的PHP設(shè)置,此步驟通常在第一次調(diào)用腳本時僅執(zhí)行一次。緩存編譯器輸出以加快后續(xù)使用的訪問速度。但是,如果腳本被修改,則再次執(zhí)行編譯步驟。
調(diào)用腳本時,運行時引擎將遍歷AST和字節(jié)碼。符號表用于存儲變量的值并提供函數(shù)的字節(jié)碼地址。
對于在某種虛擬運行時機(jī)器(包括Perl,Java,Ruby,Smalltalk等)上運行的語言而言,這種編譯為字節(jié)碼并在運行時進(jìn)行解釋的過程是典型的。

TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊
一個編譯后的代碼可以直接通過電腦的CPU來執(zhí)行。也就是說,可執(zhí)行代碼以CPU的本地語言指定
解釋語言的代碼必須在運行時從任何格式轉(zhuǎn)換為CPU機(jī)器指令。該翻譯由口譯員完成。
不能說一種語言是解釋性或編譯性的,因為解釋性和編譯性都是該特定語言實現(xiàn)的屬性,而不是該語言本身的屬性。因此,任何語言都可以編譯或解釋-它僅取決于您所使用的特定實現(xiàn)。
最廣泛使用的PHP實現(xiàn)由Zend Engine提供支持,并簡稱為PHP。ZendEngine將PHP源代碼編譯成可以執(zhí)行的格式,因此Zend Engine充當(dāng)解釋器。
- 4 回答
- 0 關(guān)注
- 766 瀏覽
添加回答
舉報