Я думаю, что вы делаете это задом наперед.
Вы можете создать несколько моделей, которые расширяют встроенный класс CI_Model с помощью требуемых общих функций. Затем вы можете наследовать эти новые классы для конкретных реализаций.
Например, допустим, вы работаете с именем таблицы базы данных Аккаунты
Сначала создайте класс, расширяющий CI_Model, который содержит общие функции для работы с набором данных (CI_DB_Result, массив моделей, массив массивов и т. Д.). Что-то вроде:
abstract class table_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
public function write_all()
{
// do some stuff to save a set of data
// maybe add some logging in here too, if it's on development
// and how about some benchmarking for performance testing too
// you get the idea
}
}
Затем создайте класс, который расширяет table_model, но с функциями, специфичными для таблицы Accounts .
public class accounts_model extends table_model
{
function __construct()
{
parent::__construct();
}
public function get_everything()
{
// whatever it takes to get everything...
}
}
Наконец, вы можете делать такие вещи, как ...
$this->account_model->get_everything();
$this->account_model->write_all();
И если у вас есть другая модель (my_model), вы также можете сделать:
$this->my_model->get_just_a_few_things();
$this->my_model->write_all();