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条回答

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器