注意:
因為我認定 ci核心 應該都要放在 core/底下 所以我有再次修正
另外是我們使用的 並不是 CI_DB_mysql_driver 是 CI_DB_mysqli_driver 所以 有再次修正
<?php /* * 參考文章: https://github.com/bcit-ci/CodeIgniter/wiki/Extending-Database-Drivers * 小毛: 改寫了 讀取 database CI_DB_mysqli_driver 的核心繼承 資料夾請放在 core */ class MY_Loader extends CI_Loader { public function database($params = '', $return = FALSE, $query_builder = NULL) { // Grab the super object $CI =& get_instance(); // Do we even need to load the database class? if ($return === FALSE && $query_builder === NULL && isset($CI->db) && is_object($CI->db) && ! empty($CI->db->conn_id)) { return FALSE; } require_once(BASEPATH.'database/DB.php'); // Load the DB class $db =& DB($params, $query_builder); $my_driver = config_item('subclass_prefix').'DB_'.$db->dbdriver.'_driver'; $my_driver_file = APPPATH.'core/'.$my_driver.'.php'; if (file_exists($my_driver_file)) { require_once($my_driver_file); $db_obj = new $my_driver(get_object_vars($db)); $db=& $db_obj; } if ($return === TRUE) { return $db; } // Initialize the db variable. Needed to prevent // reference errors with some configurations $CI->db = ''; // Load the DB class $CI->db =& $db; return $this; } }
<?php class MY_DB_mysqli_driver extends CI_DB_mysqli_driver { function __construct($params){ parent::__construct($params); } public function test() { var_dump('expression'); } }
參考資料:https://github.com/bcit-ci/CodeIgniter/wiki/Extending-Database-Drivers