拆分Codeigniter 数据库,独立提取

 

起因:

    codeigniter的activeRecord链式操作非常的方便,目前手头的项目用的不是CI,但是又想使用CI的数据库操作。
 
1. 新建文件夹 activeDB,内部目录如下
最终
 
 
 
 
直接拷贝 CI /system/database 到 activeDB下面
 
config 文件夹下面放 database.php 数据库配置文件

 

 1 <?php
 2 include(BASEPATH.'core/Common.php');
 3 include(BASEPATH.'database/DB.php');
 4 
 5 class Activedb
 6 {
 7     var $db_config = array(
 8         'dsn'   => '',
 9         'hostname' => 'localhost',
10         'username' => 'root',
11         'password' => '',
12         'database' => '',
13         'dbdriver' => 'mysqli',
14         'dbprefix' => '',
15         'pconnect' => FALSE,
16         'db_debug' => TRUE,
17         'cache_on' => FALSE,
18         'cachedir' => '',
19         'char_set' => 'utf8',
20         'dbcollat' => 'utf8_general_ci',
21         'swap_pre' => '',
22         'encrypt' => FALSE,
23         'compress' => FALSE,
24         'stricton' => FALSE,
25         'failover' => array(),
26         'save_queries' => TRUE
27     );
28     public function db_link(){
29         $db = & DB($this->db_config);
30         return $db;
31     }
32 }
2. 拷贝 CI /system/core/Common.php 到core 文件夹下
修改 log_message 这个function为 return false;
CI框架在配置里可以打开日志系统,而我们不需要这个,但是要保留这个function。
 
3. 在项目对应的位置就可以引入CI的 active record 了
 
比如我们在 activeDB同级目录创建一个 index.php的文件
 
内容如下
 
<?php
define('BASEPATH', __DIR__ . '/activeDB/');
define('APPPATH', __DIR__ . '/activeDB/');
require_once BASEPATH . 'config/database.php';
require_once(BASEPATH.'models/Comm_model.php');
class Test{
    var $db;
    var $Comm_model;
    function __construct(){
        //链接数据库
      $activedb = new Activedb();
      $this->db = & $activedb->db_link();
        //实例化通用模型
        $Comm_model = new Comm_model($this->db);
        $this->Comm_model = $Comm_model;
    }
}
在自定义的function中便可以用跟CI 一模一样的查询方式如:$this->db->get('mytable');
 
上文代码中的comm_model.php 这行可以删掉,也可以放通用的model在这里。
 
本文地址:http://www.cnblogs.com/martin-tan/p/4800892.html 来自 Martin.tan的博客园博客
 
 
 
posted @ 2015-09-11 14:42  martin.tan  阅读(433)  评论(0编辑  收藏  举报