<?php
$foo = "bar";
?>
这一条赋值语句 在zend 引擎 中是如何 解释和分配存储的?
我看了一下zend 对变量存储的处理。
struct zval_struct {
zvalue_value value; /* 变量的值 */
zend_uint refcount_gc; /*value 值 通过指针关联的符号表中变量名称的个数。*/
zend_uchar type; /* 变量当前的数据类型 /
zend_uchar is_ref__gc; /*/
};
typedef struct _zval_struct zval;
《php扩展和内核应用》中又讲到。
{
zval *fooval;
MAKE_STD_ZVAL(fooval);
ZVAL_STRING(fooval, "xxxx", 1);
ZEND_SET_SYMBOL( EG(active_symbol_table) , "foo" , fooval);
}
首先,我们声明一个zval指针,并申请一块内存。然后通过ZVAL_STRING宏将值设置为‘bar’,最后一行的作用就是将这个zval加入到当前的符号表里去,并将其label定义成foo,这样用户就可以在代码里通过$foo来使用它了。
在这里?我不理解 最后一段话的 将这个zval 假如到当前的符号表中。。。。。$foo 来使用它了。。
请大神指教一下?