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.

10 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!!

Comente!