Discuz!X1贴心小设计之 getglobal()

来源:互联网 发布:离线数据库 编辑:程序博客网 时间:2024/05/01 15:30

Discuz!X1贴心小设计之 getglobal()

最近拆X的代码,看到很多远离简单,但确实使用起来非常方便的一些小函数,这里就记下来一个。

函数原型:
./source/function/function_core.php 第55行开始:
  1. function setglobal($key , $value, $group = null) {
  2. global $_G;
  3. $k = explode('/', $group === null ? $key : $group.'/'.$key);
  4. switch (count($k)) {
  5. case 1: $_G[$k[0]] = $value; break;
  6. case 2: $_G[$k[0]][$k[1]] = $value; break;
  7. case 3: $_G[$k[0]][$k[1]][$k[2]] = $value; break;
  8. case 4: $_G[$k[0]][$k[1]][$k[2]][$k[3]] = $value; break;
  9. case 5: $_G[$k[0]][$k[1]][$k[2]][$k[3]][$k[4]] =$value; break;
  10. }
  11. return true;
  12. }
  13. function getglobal($key, $group = null) {
  14. global $_G;
  15. $k = explode('/', $group === null ? $key : $group.'/'.$key);
  16. switch (count($k)) {
  17. case 1: return isset($_G[$k[0]]) ? $_G[$k[0]] : null; break;
  18. case 2: return isset($_G[$k[0]][$k[1]]) ? $_G[$k[0]][$k[1]] : null; break;
  19. case 3: return isset($_G[$k[0]][$k[1]][$k[2]]) ? $_G[$k[0]][$k[1]][$k[2]] : null; break;
  20. case 4: return isset($_G[$k[0]][$k[1]][$k[2]][$k[3]]) ? $_G[$k[0]][$k[1]][$k[2]][$k[3]] : null; break;
  21. case 5: return isset($_G[$k[0]][$k[1]][$k[2]][$k[3]][$k[4]]) ? $_G[$k[0]][$k[1]][$k[2]][$k[3]][$k[4]] : null; break;
  22. }
  23. return null;
  24. }
上面的两个函数,第一个是设置 全局变量$_G,第二个是获取全局变量中$_G层级内的变量。

使用方法非常简单:   如获取$_G['member']['uid'] (用户的uid) ,可以这样书写:$uid = getglobal('uid', 'member');

这在X里面是个非常贴心的设计,相比做过uchome开发的人一定对这个会产生共鸣的,uchome中,大家都习惯使用$_SGLOBAL['member']['uid'],但是$_SGLOBAL这个全局变量很庞大,使用起来可能会写非常长的数组来获取自己想要得到的东西。代码写的多了以后会发现,有大量的数组堆叠。不适合与二次开发以后的二次修改。

上面的贴心设计基本上解决了这个。呵呵。
原创粉丝点击