用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4815|回复: 6
收起左侧

如何扩展db类

[复制链接]
发表于 2008-6-6 16:47:40 | 显示全部楼层 |阅读模式
CI自带的DB和自带的其他类不一样
不能用MY_扩展
怎么弄
发表于 2008-6-6 18:16:31 | 显示全部楼层
如果你想用自己的DB类,我建议不一定要扩展CI原来的DB类,DB类本来比较复杂,里面有好多函数,要用好多时间去看,如果你想用自已的数据库函数,你可以在librariers里面新建一个DB类,如myDb,这个类想操作mysql,你可以从原来CI的里面传送来一个DB联接对像就可以了。
如:
class Mydb
{
    private  $dbconn = null;

    public function __construct(&$db)
    {
        $this->dbconn = $db;
    }

    public function insert($sql)
    {
           mysql_query($sql, $this->dbconn);
           ruturn ;
     }
}

//在controller里面调用:
$this->load->library('Mydb', $this->db);
mydb->insert($sql); //to do what you need

这样不知道行不行??

评分

参与人数 1威望 +2 收起 理由
Hex + 2 好方法

查看全部评分

发表于 2008-6-6 18:33:04 | 显示全部楼层
楼上好方法!加分~
 楼主| 发表于 2008-6-6 20:11:47 | 显示全部楼层
我去官方要来答案了
http://codeigniter.com/wiki/Extending_Database_Drivers/

今天把初始化配置的程序给写完了
速度太令我失望,放弃CI了

直接用类库,不用CI
页面执行时间: 0.0539 秒 memory 0.57MB

用CI
Page rendered in 0.3856 seconds. memory 2MB

我想再写下去,速度会更惨不忍睹
 楼主| 发表于 2008-6-6 20:13:57 | 显示全部楼层
2楼方法就不能使用$this->db->xxx了而要写$this->mydb->xxx

我觉得改造后的wp-db.php很好用,建议大家用这个

我想扩展,就是因为原DB类里没有这几个很常用,很爽的方法
$this->db->get_var()
$this->db->get_col()
$this->db->get_results()
...

[ 本帖最后由 vps4 于 2008-6-6 20:15 编辑 ]
发表于 2008-6-6 22:41:38 | 显示全部楼层
呵呵,感谢楼主提供的方法。
我感觉楼主对于 CI 的性能看的太重要了。呵呵
发表于 2008-6-7 11:35:50 | 显示全部楼层
做项目是讲究策略。
致于速度,确是一个重要的问题,不过,你可以合理使用一些加速工具,或合理使用一些缓存技术。
但是在开发过程中,选取框架的目的就是加发开发的过程,这样就往往在程度运得速度上有所损失。一般两者不可得兼容。我敢说,现在没有一种框架的读数据库的速度有一般书上写教学例子快。而框架的意义就是有效的组织数据表现,快速布置开发的初始化。当然有些优秀框架在考虑到速度方面做足工功夫罢了。
我的建是:
    如果对CI的数据读写速度有偏见,可以自己写一个专用的数据库处理类(联接柄是是专用),而CI的扩展能力不错,完全不用CI的DB,随处load自己的类库就可以了。

本版积分规则