[李景山php] 深入理解PHP内核[读书笔记]--第三章:变量及数据类型--变量的结构和类型--预定义变量

来源:互联网 发布:ipad淘宝网旧版本 编辑:程序博客网 时间:2024/06/08 12:01

预定义变量


在PHP脚本执行的时候,用户全局变量(在用户空间显示定义的变量)会保存在一个HashTable数据类型的符号表(symbol_table)中,而我们用得非常多的在全局范围内有效的变量却与这些用户全局变量不同。

例如:GET,_POST,SERVER,_FILES等变量,我们并没有在程序中定义这些变量,并且这些变量也同样保存在符号表中,从这些表象中我们不难得出结论:PHP是在脚本运行之前就将这些特殊变量加入了符号表。

预定义变量$GLOBALS的初始化


我们以cgi模式为例说明 $GLOBALS的初始化。从cgi_main.c文件main函数开始。
指向顺序:
main()->php_request_startup()->zend_activate()->init_executor()

PHP请求周期中,通过 php_request_startup()也会调用。

$_GET,$_POST等变量的初始化


其它的$_FILES中的size、name等字段,其实现过程与type类似。

预定义变量的获取


变量的存放位置:EG(symbol_table)。

0 0
原创粉丝点击