Desenvolvedores um pouco mais avançados vão desejar em algum momento melhorar ou mudar algo nas bibliotecas nativas de CodeIgniter. Isto é perfeitamente possível neste framework PHP e para isso foram postas à nossa disposição duas maneiras de atuar:
Vamos salvá-lo no diretório de nossas próprias bibliotecas: system/application/libraries e lhe damos o nome da biblioteca que queremos substituir. Por exemplo, se queremos substituir a biblioteca Calendar, salvaríamos nosso arquivo como "Calendar.php".
O novo código da biblioteca será o que nós quisermos, só temos que respeitar o nome da biblioteca original:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class CI_Calendar{
protected $ci;
function __construct(){
$this->ci =& get_instance();
}
function algo(){
//qualquer coisa...
}
}
Agora, quando carreguemos a biblioteca nativa Calendar na realidade se estará carregando o código que definimos nessa nova classe.
$this->load->library('calendar');
$this->calendar->algo();
//$this->calendar->generate(); daria erro, pois já não existe esse método.
O processo é bastante parecido ao de substituir por completo o código da biblioteca, exceto por duas coisas:
Este seria o código para estender a biblioteca Calendar.
class MY_Calendar extends CI_Calendar {
}
Teríamos que salvar esse arquivo no diretório das bibliotecas (system/application/libraries) e lhe dar o nome "MY_Calendar.php".
O carregamento da classe da biblioteca estendida é feita do mesmo jeito que para a biblioteca original, sem utilizar o prefixo "MY_". A partir de então você terá a classe original mais as funções com as que você a estendeu.
$this->load->library('calendar');
$this->calendar->minhafuncao_estendida();
Com isto já aprendemos tudo que devíamos conhecer sobre criar suas próprias bibliotecas com CodeIgniter e estender ou substituir as existentes. Mais adiante conheceremos como estender ou substituir as classes do núcleo de CodeIgniter, como podem ser Controller, Config...
![]() | Exemplo de biblioteca em CodeIgniter: Calendar Library | Exemplo de criação e uso de uma biblioteca em CodeIgniter | ![]() |