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

ci如何 获得config/database.php里的配置的配置信息

[复制链接]
发表于 2009-7-1 16:55:58 | 显示全部楼层 |阅读模式
RT
分析了一个database/DB.php

DB.php中获得变量的方式都是include进去然后处理的。

所以ci 获取db中配置信息不能load 也只能include来处理

或者把自己的配置信息写到myconfig.php ,自定义的file中,然后load进来!

看大家有没有更好的方法 来获得database.php的配置;
发表于 2009-7-1 17:14:18 | 显示全部楼层
你获取 db 的配置做什么用?

PS: 貌似 $config 是全局变量,你可以直接使用吧?
 楼主| 发表于 2009-7-1 17:24:10 | 显示全部楼层
你获取 db 的配置做什么用?

PS: 貌似 $config 是全局变量,你可以直接使用吧?
Hex 发表于 2009-7-1 17:14


写数据库扩展的自定义类,ci的oracle驱动问题很大,而且不支持clob操作;

$config是全局变量?config也需要$this->config->item('configName');

看来只能这样了
$this->load->library('oci');
$this->config->load('myconfig');
$this->oci->conn($this->config->item('dbname'),$this->config->item('dbpasswd'));

$this->oci->get();
……
发表于 2009-7-1 17:27:30 | 显示全部楼层
如果你的数据库类都是自己做的,完全可以不用 CI 的数据库配置。另起炉灶吧。
 楼主| 发表于 2009-7-1 18:15:28 | 显示全部楼层
如果你的数据库类都是自己做的,完全可以不用 CI 的数据库配置。另起炉灶吧。
Hex 发表于 2009-7-1 17:27


也只能这样做;
发表于 2009-7-1 18:23:36 | 显示全部楼层
写数据库扩展的自定义类,ci的oracle驱动问题很大,而且不支持clob操作;

$config是全局变量?config也需要$this->config->item('configName');

看来只能这样了
$this->load->library('oci');
$this->config->lo ...
xian366 发表于 2009-7-1 17:24

这样就变成赤果果的db直连了,为了美观和潮还是封装好吧
 楼主| 发表于 2009-7-2 09:40:12 | 显示全部楼层
这样就变成赤果果的db直连了,为了美观和潮还是封装好吧
visvoy 发表于 2009-7-1 18:23


你的意思是如何封装?
发表于 2009-7-2 09:43:04 | 显示全部楼层
百毒或骨骼搜索“类封装”
 楼主| 发表于 2009-7-2 10:17:20 | 显示全部楼层
本帖最后由 xian366 于 2009-7-2 10:21 编辑
百毒或骨骼搜索“类封装”
visvoy 发表于 2009-7-2 09:43

呵呵,不明白你的意思是什么,何谓”封装类“

不过现在已经是实现了类似activeRecord的操作方法,

$this->oci->select('id,name,title')->where('id < 110')->from('test2')->limit(2,5)->get();

考虑到与Oci与oci更低的耦合,能够在别的框架中使用,别的框架中很很少支持CLOB操作,CI的OCI驱动是基于php4的。

$this->oci->conn();

获取资源可以省略,直接在library初始化中获取资源对象,就需要
include(APPPATH.'config/database'.EXT);
...
$params = $db[$active_group];
......

CI/database/DB.php就是这样做的。
如果这样,重用性就差了,得不偿失,而且需要在初始化的时候获取资源标识。
这样在别的框架中plugin进去;

现在正考虑$this->oci->insert();$this->oci->where()->update 方法支持CLOB,怎么对象绑定,
由于CLOB、BLOB和普通的insert update不同,怎么才能和active record的操作更小的差别来实现,更简单的大数据块的操作!
 楼主| 发表于 2009-7-2 10:33:42 | 显示全部楼层
本帖最后由 xian366 于 2009-7-2 10:35 编辑

现在打算这样
$data=array(
    'name'=>'tester',
    'title'=>'this is a test',
    'comments'=>array('CLOB'=>yourBlobData)
);

$this->oci->insert('yourtablename',$data);


这样看合理不?大家有没有更好的方法,

或者这样:
$data=array(
    'name'=>'tester',
    'title'=>'this is a test',
    'comments'=>array('CLOB','yourBlobData')
);

$this->oci->insert('yourtablename',$data);


generated SQL:

insert into test2 (name,tittle,comments) values ('tester','this is a test!',EMPTY_CLOB()) RETURNING comments INTO :myclob

本版积分规则