thinkphp3.2.3框架动态切换多数据库的方法分析

(编辑:jimmy 日期: 2026/1/27 浏览:2)

本文实例讲述了thinkphp3.2.3框架动态切换多数据库的方法。分享给大家供大家参考,具体如下:

版本说明:

thinkphp3.2.3

新增自定义行为类

文件位置:Application/Common/Behaviors/SwitchDbBehavior.class.php

文件内容:

namespace Common\Behaviors;
class SwitchDbBehavior
{
 //私有库id,如何连接公有库则设置为share字符串
 private $_privateId = '';
 /*
  * 行为扩展的执行入口必须是run
  * $param 为引用传值,所以实参必须是变量
  */
 public function run(&$params)
 {
   //获取私有库id
   $this->_privateId = empty($params) && session('"htmlcode">
/*数据库配置*/
define('DB_WECHAT_HOST','127.0.0.1');        //主机host
define('DB_WECHAT_USER','common');         //用户名
define('DB_WECHAT_PASS','common');         //密码
define('DB_WECHAT_NAME','wechat_');         //私有库前缀
define('DB_WECHAT_SHARE_NAME','wechat_share');   //共有库名
define('DB_WECHAT_PORT','3306');          //端口
define('DB_WECHAT_DEBUG',TRUE);          //数据库调试模式 开启后可以记录SQL日志

图中代码验证数据库存在不存在的C('PRIVATEIDS')在文件Application/Common/Conf/dbname.php中配置内容如下:

<"htmlcode">
'LOAD_EXT_CONFIG' => 'constants,systemConfig,dbname',//加载常量配置

在使用自定义行为类的时候要在Application/Common/Conf/中新增tags.php

内容如下:

/*
* 扩展行为类配置文件
* @author:liangxifeng
* @date:2016-08-13
*/
return array(
   //应用开始标签位添加切换数据库行为
   'action_begin'=>array('Common\\Behaviors\\SwitchDbBehavior'),
);

行为类介绍请点击

扩展行为类详细了解请点击

使用方法

在注册session后或手动加载使用,比如在控制器中:

  public function index()
  {
    //注册session切换数据库
    session('privateId',2);
    //手动切换数据库为私有库
    tag('action_begin',$params='share');
    $wechat = D('Wechat');
    //查询数据库
    $res = $wechat->where('wechat_id=1')->find();
    echo "<pre>";
    var_dump($res);
    exit;
  }

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?