background image

php 函数的实现

从图 1 可以看到,php 实现了一个典型的动态语言执行过程:拿到一段代码后,经过

词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后 ZEND 虚拟

机顺次执行这些指令完成操作。Php 本身是用 c 实现的,因此最终调用的也都是 c 的函数,

实际上,我们可以把 php 看做是一个 c 开发的软件。

通过上面描述不难看出,php 中函数的执行也是被翻译成了 opcodes 来调用,每次函数调

用实际上是执行了一条或多条指令。

对于每一个函数,zend 都通过以下的数据结构来描述

typedef union _zend_function {
    zend_uchar type;    /* MUST be the first element of this struct! */
    struct {