Discuz教程网

[二次开发] ThinkPHP获取Discuz的信息之后就不能实例化Thinkphp本身的模型的原因分析

[复制链接]
authicon dly 发表于 2012-10-6 16:44:33 | 显示全部楼层 |阅读模式
现在是ThinkPHP+Discuz!X2.5的整合
想让ThinkPHP直接获取Discuz的用户登录信息。下面这个UserAction可以成功获取到。
  1. <?php
  2. class UserAction extends Action{

  3. function logininfo(){

  4. include '../bbs/source/class/class_core.php';
  5. $discuz = & discuz_core::instance();//以下代码为创建及初始化对象
  6. $discuz->cachelist = $cachelist;
  7. $discuz->init();//以上是调用discuz公共执行类等核心代码
  8. global $_G;
  9. $arr1= array(
  10. 'uid'=>$_G['uid'],
  11. 'username'=>$_G['username'],
  12. 'adminid'=>$_G['adminid'],
  13. 'groupid'=>$_G['groupid'],
  14. 'sid'=>$_G['sid'],
  15. 'formhash'=>$_G['formhash'],
  16. 'connectguest'=>$_G['connectguest'],
  17. 'timestamp'=>$_G['timestamp'],
  18. 'starttime'=>$_G['starttime'],
  19. 'clientip'=>$_G['clientip'],
  20. 'referer'=>$_G['referer'],
  21. 'charset'=>$_G['charset'],
  22. 'gzipcompress'=>$_G['gzipcompress'],
  23. 'authkey'=>$_G['authkey'],
  24. );
  25. //dump($arr1);
  26. return $arr1;

  27. }

  28. }

  29. ?>

  30. 但是在其他Action中调用它,就会出现一个很严重的问题。
  31. 如果我调用了这个UserAction,并且实例化了模型,页面将什么都不显示。
  32. 如果我只实例化模型,或者只调用这个UserAction,则正常显示。
  33. 我建立了一个测试控制器,TestAtion,代码如下

  34. <?php
  35. class TestAction extends Action{
  36. function test(){
  37. $user=new UserAction(); //实例化UserAction
  38. $user_login_info=$user->logininfo();

  39. $this->assign('userinfo',$user_login_info);

  40. //$local=new Model('Local'); //实例化Local模型

  41. $this->display();

  42. }

  43. }
  44. ?>
复制代码

如果把
  1. $local=new Model('Local');
复制代码

这句代码备注掉,模板可以正常显示
  1. {$userinfo['username']}
复制代码

等变量。
但是不备注
  1. $local=new Model('Local');
复制代码

什么都不能显示。
反过来也是一样,把

  1. $user=new UserAction();
  2. $user_login_info=$user->logininfo();
  3. $this->assign('userinfo',$user_login_info);
复制代码

这么3行去掉,模板可以正常显示,也可以获取Local的信息。
总而言之,他们2个犯冲,只能显示其一。

原因:
UCENTER里有个C方法,TP里也有。
还有就是类冲突, 因为调用用户信息, ucenter 里面的 类 和 tp 里面的类的名称冲突 ,把 类名在修改下
比如:ThinkPHP\Lib\Think\Db\Db.class.php 跟uc_client 里面的db.class.php




上一篇:Discuz X2.5实现多程序单点登录思路分析
下一篇:通过THINKPHP调用discuz的$_G全局变量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-6-17 00:08

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表