一段PHP代码会经过词法解析、语法解析等阶段,会被翻译成一个个指令(opcode),然后 zend 虚拟机会顺序执行这些指令。PHP 本身是用C语言实现的,因此较终调用的也是C语言的函数,实际上我们可以把 PHP 看做一个C语言开发的软件。
PHP 执行的核心就是翻译出来的一条一条指令,也就是 opcode,opcode 是 PHP 程序执行的较基本单位。
在计算机科学领域中,操作码(Operation Code)被用于描述机器语言指令中,指定要执行某种操作的那部分机器码,构成 opcode 的指令格式和规范由处理器的指令规范指定。
一个 opcode 由两个参数(op1,op2)、返回值和处理函数组成。PHP 程序较终被翻译为一组 opcode 处理函数的顺序执行。
下面列举了几个常见的处理函数:
ZEND_ASSIGN_SPEC_CV_CV_HANDLER : 变量分配 ($a=$b);
ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER:函数调用;
ZEND_CONCAT_SPEC_CV_CV_HANDLER:字符串拼接 $a.$b;
ZEND_ADD_SPEC_CV_CONST_HANDLER: 加法运算 $a+2;
ZEND_IS_EQUAL_SPEC_CV_CONST:判断相等 $a==1;
ZEND_IS_IDENTICAL_SPEC_CV_CONST:判断相等 $a===1。