符号表 变量的花名册

符号表是符号表是一张哈希表,

里面存储了变量名->变量的zval结构体的地址
// zend/zend_globals.h 182行


struct _zend_executor_globals {
    ...
    ...

    HashTable *active_symbol_table; /*活动符号表*/
    HashTable symbol_table;        /* 全局符号表 */

    HashTable included_files;    /* files already included */

}


例如:

$a = 3;

$b = 4.321;

$c = 'hello';

底层原理:

生成了3个结构体

同时,全局符号表中多了3条记录

变量名  地址    结构体

a    --> 0x123 --> 结构体{3}

b    --> 0x125 --> 结构体{4.321}

c    --> 0x122 --> 结构体{hello}




你可能感兴趣的:(符号表 变量的花名册)