shadow_chang 2014-07-31 03:37
浏览 762

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

请大神指教一下?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!