По умолчанию загрузка библиотеки CodeIgniter может быть выполнена только один раз. Последующие попытки загрузить ту же библиотеку игнорируются. Вы можете (в некотором роде) обойти это, сказав CI создавать экземпляр класса с другим именем каждый раз, когда вы загружаете другую копию библиотеки (см. Ответ на этот вопрос )
Лучшим решением, вероятно, является создание собственного класса вместо использования механизма загрузки библиотеки CI. Таким образом, вы можете создавать и хранить столько копий, сколько вам нужно.
РЕДАКТИРОВАТЬ: я бы предложил оставить класс в каталоге библиотеки и просто использовать PHP include (), чтобы сделать его доступным для ваших моделей / контроллеров, где это необходимо.
Что касается доступа к CodeIgniter из вашего класса, вы можете сделать это, используя следующий код:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
Функция get_instance () возвращает суперобъект CodeIgniter, и как только она назначена переменной $ CI, вы можете получить доступ к любому из методов CI, как и в модели или контроллере, кроме использования $ CI вместо $ this , См. эту ссылку для получения дополнительной информации.