在调阅X3.0源代码的过程中发现找不到类似$_G=array()这样的的声明语句,使很多同学困惑于这个变量,我也是,然后我开始调试代码...到底$_G是在何处定义的呢?从论坛搜出来的贴子有很多同学在问这个问题,其实大家就想在不调试代码的时候知道这个答案,开发组的同学有回答,但都有装B的嫌疑,从不正面回答,让我们去看class_core.php,我知道这个文件几乎被所有文件包含,从头到脚看一遍我还是不知道这个变量在哪定义的。经过调试我可以确信开发人员没有很明确的定义过这个变量,最早出现$_G的地点是class_core.php调用/source/class/discuz/discuz_application.php中定义的类初始化环境时即self:_app = discuz_application::instance();中调用了_init_env()方法,这个方法中有一句global $_G起到了先声明全局变量$_G后再引用全局$_G的作用。在强调代码可读性的今天,个人觉得这种做法并不友好。几乎所有文件都能见到global $_G引用全局变量这样的语句,是问不通过调试谁能知道到底哪句global $_G是用来定义$_G这个变量的呢? |