php 解析流程

WBOY
發布: 2016-08-08 09:23:48
原創
2028 人瀏覽過

我們都知道PHP腳本的執行過程,先是由Zend引擎將PHP原始碼編譯成opcode序列,再由Zend VM去解釋執行。一般編譯的過程都是先進行詞法分析、文法分析,然後才編譯。在經過語法分析之後,有一個抽象語法樹(AbstractSyntax Tree或縮寫為AST)的概念,他算是語法分析的產出,之後的編譯過程是編譯器在AST基礎上進行的。

但是PHP比較特殊,Zend引擎在文法分析後直接產出了opcode,沒有產生AST。這樣做最大的好處是加快了編譯過程,壞處則是失去了一些自由性,難以最佳化以及導致編譯程式邏輯複雜。具體PHP官網上有一篇wiki探討了在PHP的編譯過程中引入AST,當然實現起來難度肯定很大。

我們在平時一般不會接觸到PHP的編譯過程,但是AST卻是個有用的東西,我們平時工作中很多工具裡面都有AST,比如PHP_CodeSniffer、PHP_Depend、ZendStudio、PDT,需要對源碼進行分析的場合,或多或少都需要AST的幫忙。

下面我們看下PHP7和php5編譯流程,如圖


以上就介紹了php 解析流程,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!