opencart2、opencart3集成codeigniter3的数据访问类

发现opencart的数据访问太原生态了,代码冗余,可读性差,准备把codeigniter3的数据访问类集成进来,总共4个步骤:

1. 拷贝codeigniter的system/database整个目录到opencart的system/library下

2. 新建一个文件system/library/db_ci.php

 

<?php

define('BASEPATH', dirname(__FILE__).'/../../system/library/');
define('EXT', '.php');

class DB_CI {

    private static $instance;

    public static function get_instance($db_driver, $db_host, $db_username, $db_password, $db_name, $db_prefix) {
        if(self::$instance == null) {

            require_once(BASEPATH . 'database/DB' . EXT);
            $params = array(
                'dbdriver' => $db_driver,
                'hostname' => $db_host,
                'username' => $db_username,
                'password' => $db_password,
                'database' => $db_name,
                'dbprefix' => $db_prefix,
                'pconnect' => FALSE,
                'db_debug' => FALSE,
                'cache_on' => FALSE,
                'char_set' => 'utf8',
                'dbcollat' => 'utf8_general_ci',
            );
            self::$instance = DB($params,TRUE);
        }
        return self::$instance;
    }
}


3. opencart2: index.php文件,在 $registry->set('db', $db); 之后添加下面2行(为了和原生的$db区分开,我这里使用的$db_ci)

    opencart3: system/framework.php,在 $registry->set('db' ……之后添加

// 集成codeigniter的数据访问
$db_ci = DB_CI::get_instance(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PREFIX);
$registry->set('db_ci', $db_ci);

 

4. 加入codeigniter的系统错误输出函数,system/helper/general.php末尾添加

 

/*
 * 集成codeigniter的数据访问类,数据库错误显示,需要用到该函数
 * */
function log_message($level = 'error', $message, $php_error = FALSE)
{
    //echo($message);
    $handle = fopen(DIR_LOGS . 'error_sql.log', 'a');
    fwrite($handle, date('Y-m-d G:i:s') . ' - ' . print_r($message, true) . "\n");
    fclose($handle);
}

 

 

 

完毕,所有要使用的地方,就用$this->db_ci->

 

 

比如插入数据:

 

$this->db_ci->insert('表名', $data);
$last_id = $this->db_ci->insert_id();

其他方法请自行查看codeigniter的数据访问手册。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值