字面量存儲:PHP代碼中定義的一些變量初始值、調用的函數(shù)名稱、類名稱、常量名稱等等稱之為字面量,這些值用于執(zhí)行時初始化變量、函數(shù)調用等等
變量分配情況:與字面量類似,這里指的是當前opcodes定義了多少變量、臨時變量,每個變量都有一個對應的編號,執(zhí)行初始化按照總的數(shù)目一次性分配zval,使用時也完全按照編號索引,而不是根據(jù)變量名索引
從PHP代碼到opcode是怎么實現(xiàn)的?
最容易想到的方式就是正則匹配,當然過程沒有這么簡單。PHP編譯過程包括詞法分析、語法分析,使用re2c、bison完成,舊的PHP版本直接生成了opcode,PHP7新增了抽象語法樹(AST),在語法分析階段生成AST,然后再生成opcode數(shù)組