THINKPHP如何调用discuz的$_G全局变量啊,有做过的同学讲一下啊


这个是http://localhost/smart_bendi/bbs2/config.bbs.inc.php

代码如下:

   
  <?php
  
require '../bbs2/source/class/class_core_smart.php';//引入系统核心文件

$discuz = & discuz_core::instance();//以下代码为创建及初始化对象
$discuz->cachelist = $cachelist;
$discuz->init();//以上是调用discuz公共执行类等核心代码

//$_G是个大数组
$dddaaaccc124d1= array(
'uid'=>$_G['uid'],
'username'=>$_G['username'],
'adminid'=>$_G['adminid'],
'groupid'=>$_G['groupid'],
'sid'=>$_G['sid'],
'formhash'=>$_G['formhash'],
'connectguest'=>$_G['connectguest'],
'timestamp'=>$_G['timestamp'],
'starttime'=>$_G['starttime'],
'clientip'=>$_G['clientip'],
'referer'=>$_G['referer'],
'charset'=>$_G['charset'],
'gzipcompress'=>$_G['gzipcompress'],
'authkey'=>$_G['authkey'],
);
print_r($dddaaaccc124d1);
$var='test';
return $dddaaaccc124d1;

?>

可以获取到$dddaaaccc124d1数组,能print_r出来。

但是我在ThinkPHP/Lib/UserAction.class.php写了一个index方法,访问地址:http://localhost/smart_bendi/web/User-index

却只能获取到数组下标,我尝试的在刚才的文件里定义一个$var='test';却可以获取到。

输出结果:

Array ( [uid] => [username] => [adminid] => [groupid] => [sid] => [formhash] => [connectguest] => [timestamp] => [starttime] => [clientip] => [referer] => [charset] => [gzipcompress] => [authkey] => ) test

这是为什么,ThinkPHP把$_G给销毁掉了吗?
求路过的同学帮忙看看,愁死我了,卡住好几天了。

============================================================================

问题补充:

@skcks 的方法管用!!!

谢谢兄弟!!!!

Discuz!X thinkphp

失眠的右手 12 years, 5 months ago

谢谢兄弟,你的方法管用。

获取的问题解决了,我也把他写成了一个类,方便调用。
下面是代码:

   
  <?php
  
class UserAction extends Action{

function logininfo(){

include '../bbs/source/class/class_core.php';
$discuz = & discuz_core::instance();//以下代码为创建及初始化对象
$discuz->cachelist = $cachelist;
$discuz->init();//以上是调用discuz公共执行类等核心代码
global $_G;
$arr1= array(
'uid'=>$_G['uid'],
'username'=>$_G['username'],
'adminid'=>$_G['adminid'],
'groupid'=>$_G['groupid'],
'sid'=>$_G['sid'],
'formhash'=>$_G['formhash'],
'connectguest'=>$_G['connectguest'],
'timestamp'=>$_G['timestamp'],
'starttime'=>$_G['starttime'],
'clientip'=>$_G['clientip'],
'referer'=>$_G['referer'],
'charset'=>$_G['charset'],
'gzipcompress'=>$_G['gzipcompress'],
'authkey'=>$_G['authkey'],
);
//dump($arr1);
return $arr1;


}

}
?>

但是我又发现了另外一个严重的问题。
我建立了一个TestAtion,代码如下

   
  <?php
  
class TestAction extends Action{
function test(){
$user=new UserAction();
$user_login_info=$user->logininfo();
$this->assign('userinfo',$user_login_info);
//$local=new Model('Local');
$this->display();
}
}
?>

如果我把$local=new Model('Local');这句代码备注掉,模板可以正常显示{$userinfo['username']}等变量。

但是不备注$local=new Model('Local');什么都不能显示。

反过来也是一样,把
$user=new UserAction();
$user_login_info=$user->logininfo();
$this->assign('userinfo',$user_login_info);
这么3行去掉,模板可以正常显示,也可以获取Local的信息。

总而言之,他们2个犯冲,只能显示其一。

天心阁吴克 answered 12 years, 5 months ago

Your Answer