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

49 篇文章 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)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值