上周和 刘志强同学 讨论字符串的连接操作: 一般情况下我们用点号做字符串的连接操作,但是如果在某个长字符串中放一个变量,通常我们会采用在字符串中直接写入一个变量的方式来实现 $var = 10; $str = "test string begin " . $var . " end"; //或 $var = 10; $str = "test string be…
PHP脚本在内核中一般会经过词法解析,语法解析、编译生成中间代码,执行中间代码这样四个大的步骤。其中,第四个步骤,执行中间代码PHP内核默认情况下是通过zend/zend_vm_execute.h文件中的execute函数调用执行完成,对于所有的中间代码,默认实现是以按顺序执行,当遇到函数等情况时跳出去执行,执行完后再回到跳出的位置继续执行。 与过程相比,过…
昨天和一朋友在邮件中讨论这样一个问题:zend_internal_function,zend_function,zend_op_array这三种结构是可以相互转化的,这三者的转化是如何进行的呢? 以此文,总结。 在函数调用的执行代码中我们会看到这样一些强制转换: EX ( function_state ) . function = ( zend_functi…
在PHP中,变量存储在一个名叫ZVAL的容器中。它也是PHP实现弱语言的关键因素之一。 这个容器是一个标记类型和记录所有PHP实现的类型的集合体。而对象作为其存储类型的一种, 以type=IS_OBJECT为标记,以zend_object_value结构体为值。但是zend_object_value的结构体仅有两个字段handle和handlers。 而这两…