代码改变世界

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

2017-06-29 14:41  吃饱了才能撑着  阅读(31)  评论(0)    收藏  举报
##预定义变量
_____________________________________________________________
 
在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)。
 
php初学者---千锋php课堂笔记