Carregando bibliotecas (libraries) no CodeIgniter

8 de agosto de 2011, em Passos Iniciais, por

Como carregar bibliotecas no CodeIgniter: imagem ilustrativa

No artigo apresentando as classes do CodeIgniter demos uma passada geral em algumas das funcionalidades do framework. Como pôde ser visto, o CodeIgniter já vem com uma série de classes, funcões e funcionalidades para facilitar, e muito, a vida do programador!

Mas, para usarmos e nos valermos deste poder, é preciso, antes, que saibamos como “chamar” este poder. E este artigo mostrará justamente isso: como carregar e usar bibliotecas do CodeIgniter!

Loader

Existe, no core do CodeIgniter, uma classe que é iniciada sempre e automaticamente, responsável por prover o loader dos recursos do CI: é a Loader (“carregador”). Através desta classe é possível carregar recursos do CI, tais como views, helpers e libraries, models e outros.

Basicamente, a loader possui uma sintaxe bastante comum entre os diferentes recursos que podem ser chamadas, diferindo, somente, em algum parâmetros. Veremos, a seguir, como carregar um dos recursos mais comuns do CodeIgniter> libraries.

Como carregar uma library no CodeIgniter

Para se carregar uma library (ou, se preferir, “biblioteca”) no CodeIgniter, use o seguinte:

$this->load->library('classe', $config, 'alias');

Ou seja: o primeiro parâmetro é o nome do recurso que se deseja carregar; o segundo, as configurações desta classe e; o terceiro, seu alias (apelido).

Nome da library

Por exemplo, para carregar as funcionalidades de e-mail do CodeIgniter, usa-se o seguinte (em qualquer controller):

$this->load->library('email');

Pronto, as funcionalidades de e-mail já estão prontas para serem usadas! Uma vez carregada a classe, você precisará acessar os métodos desta e, para isso, usa-se o modelo:

$this->email->funcao();

Por exemplo, a classe library possui a função to() que serve para especificar para quem o e-mail será enviado. Depois de carregada a classe, usa-se:

$this->email->to('fulano.de.tal@exemplo.com.br');

Não se preocupe com funções específicas no momento. Futuramente, explicaremos o uso de todas as funcionalidades do CI aqui no CodeIgniter Brasil. ;-)

Configurações

O segundo parâmetro (opcional), como vimos, é a configuração que se quer quando o recurso for inicializado. Por exemplo:

$config = array (
    'mailtype' => 'html'
    ,'charset'  => 'utf-8
    ,'priority' => '1'
);
 
$this->load->library('email', $config);

Ou seja, através de um array de configurações, passamos as opções que sejam da necessidade naquele momento de iniciar o recurso (novamente, não se preocupe, pois a classe de e-mail será vista em momento futuro).

Apelido

O terceiro parâmetro (opcional) é o apelido que podemos atribuir àquela classe para seu uso durante a programação. Por exemplo, é possível fazer o seguinte:

$this->load->library('email', '', 'em');
$this->em->to('fulano.de.tal@exemplo.com.br');

Obviamente este apelido de exemplo não tem nenhuma utilidade prática e serviu somente para exemplificar o uso do recurso. Em projetos “de verdade”, provavelmente não será preciso atribuir apelidos aos recursos básicos do CI.

Auto carregar libraries no CodeIgniter

É bastante comum um projeto usar diversos recursos nativos do CodeIgniter. Se esse for o caso, imagine a inconveniência de carregar a biblioteca em cada controller… Felizmente, existe a possibilidade de autoload de libraries (de demais recursos) do CodeIgniter.

Basta acessar o arquivo application/config/autoload.php e procurar o array de recursos que se quer. No caso das libraries, que estamos tratando, basta encontrar a diretiva “libraries” (na versão atual, linha 55) e preencher o array com os nomes das bibliotecas que se queira. Por exemplo:

$autoload['libraries'] = array('database', 'session', 'email');

Com isso, estas bibliotecas serão automaticamente carregadas em cada chamada ao CI, dispensando e economizando o uso de um loader específico para cada recurso.

Palavras finais

Como pôde ser visto, carregar e usar recursos de uma library no CodeIgniter é bastante simples e, depois de certo tempo usando o framework, bastante intuitivo.

A atenção fica para 2 pontos: ao usar apelidos, não cometer o erro juvenil de dar nomes iguais para recursos diferentes e; analisar bem o recurso de autoload explicado, já que carregar recursos do CI para controllers que não farão uso deste é desperdiçar recursos e comprometer a performance do projeto.

11 comentários em "Carregando bibliotecas (libraries) no CodeIgniter"

gravatar

Tayron Miranda  em 16 de agosto de 2011

Opa, bacana, bem simples e objetiva a explicação, gostei.. :P

gravatar

Tárcio Zemel  em 22 de agosto de 2011

Que bom, Tayron! Apareça!

gravatar

Junior  em 9 de setembro de 2011

Estou a uma semana estudando CI e ja conhecia sobre isso, mas é um ótimo artigo para quem está começando no CI e começando a programar em php OO

gravatar

PauloLinhares9  em 11 de janeiro de 2012

Olá Tárcio, como faço para mandar um parâmetro ao corpo da mensagem que estou enviando. sendo que a mensagem está em um banco de dados.
Ex:
<?php
$nome= "fulano de tal";

$this->load->library('email');
$this->email->to('fulano@algum.com');
$this->email->message('$vindo_do_bd');
?>
Como eu posso passar esse $nome ao corpo do email que é um arquivo html armazenado no bd ($vindo_do_bd)) ?

Fico grato se puder me passar essa dica! Abraço.

gravatar

Tárcio Zemel  em 17 de janeiro de 2012

Basta pegar o "corpo" do banco e jogar como parâmetro da função. Facinho! ;-)

Qualquer coisa, dá uma olhada no artigo Models, Views e Controllers trabalhando juntos no CodeIgniter. Abraços!

gravatar

Kabayan  em 20 de setembro de 2015

Hi Jo,Here is the Session.php file to replace sytesm/libraries/Session.phpThen you can add$config['sess_persistant_cookie'] = FALSE;to application/config/config.php set to FALSE sessions are destroyed when you close the window.

gravatar

http://www.blrimages.net/  em 28 de abril de 2016

Thank you so much for all the tips on where to find the wafers. I finally found them today in the ice cream aisle and will be able to take the cookies to work tomorrow. Thanks again!!

gravatar

Jessé Ulisses  em 28 de junho de 2017

Bom dia pessoal, Eu configurei o autoload para ler a biblioteca database e no meu model de login a chamada está correta, porém, ao chamar a função db aparece um erro dizendo que a função db foi chamada em uma variável NULL… agora eu dei um var_dump($this) e foram exibidas as seguintes informações: C:wampwwwindico-5-estrelapainelapplicationmodelsModel_login.php:16:
object(Model_login)[19]
private 'tabela' => string 'login' (length=5)
public 'config' => null
public 'db' => null
public 'email' => null
public 'form_validation' => null
public 'input' => null
public 'load' => null
public 'router' => null
public 'session' => null
public 'table' => null
public 'unit' => null
public 'uri' => null
public 'pagination' => null
public 'security' => null

Vocês sabem como resolver esse problema?

Comente!