<?php class Mock_Database_DB_Driver extends CI_DB_driver { /** * @var object The actual Driver */ protected $ci_db_driver; /** * Instantiate the database driver * * @param string DB Driver class name * @param array DB configuration to set * @return void */ public function __construct($driver_class, $config = array()) { if (is_string($driver_class)) { $this->ci_db_driver = new $driver_class($config); } } /** * Overloading method, emulate the actual driver method (multiple inheritance workaround) */ public function __call($method, $arguments) { if ( ! is_callable(array($this->ci_db_driver, $method))) { throw new BadMethodCallException($method. ' not exists or not implemented'); } return call_user_func_array(array($this->ci_db_driver, $method), $arguments); } } class CI_DB extends Mock_Database_DB_QueryBuilder {}