符号表是符号表是一张哈希表,
里面存储了变量名->变量的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}