Nos últimos meses estou trabalhando bastante em dois projetos com Code Igniter: um manager (MongoDB + Code Igniter) e o sistema de e-commerce do Eu Compraria!
Aprendi vários macetes do framework e também melhorei o conhecimento que eu achava que tinha de MVC, antes eu fazia um uso excessivo de helpers para manipular coisas que hoje vejo que deveria estar no model – e em algumas funções precisei usar helpers no model, e não queria sobrecarregar a aplicação carregando este helper sempre.
Como carregar um helper em um model?
Em um controller normal carregar um helper do Code Igniter é muito simples:
$this->load->helper('url');
O $this no controller se refere a instância do Code Igniter e é ela que carrega os helpers, models e tudo mais do CI. Quando estamos em um model (estou usando Data Mapper e recomendo que você faça o mesmo) o $this é uma referência do própio objeto do model.
Para isso no model temos que recuperar a instância do CI e depois fazer com que esta carregue o helper (ou qualquer outra parte do código que o sistema precise), por exemplo:
$ci = get_instance();
$ci->load->helper('url');
Pronto, agora você pode carregar helpers, models e bibliotecas onde quiser: model, helper e bibliotecas.