拆分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的博客园博客
转载请注明出处:http://www.cnblogs.com/martin-tan/