2 yinggehendidiao yinggehendidiao 于 2014.07.31 11:37 提问

关于php zend 处理 变量的存储 疑惑 ,请求大神解答

<?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 来使用它了。。

请大神指教一下?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!