Criando Classes do Núcleo do Sistema
Toda vez que o Code Igniter roda, há várias classes básicas que são inicializadas automaticamente como parte do número do framework. É possível, porém, trocar qualquer uma destas classes básicas como suas próprias versões ou mesmo estender as versões de núcleo.
A maioria dos usuários não irá precisar de nada disto, mas a opção de substituir ou estender classes existem para aqueles que podem querer alterar significativamente o número do Code Igniter.
Note: Mexer com uma classe de núcleo do sistema tem muitas implicações, por isso tenha certeza que você saiba o que está fazendo antes de tentá-lo.
Lista de Classes do Sistema
Abaixo vai a lista dos aruqivos do núcleo do sistema que são chamados toda vez que o Code Igniter roda:
- Benchmark
- Input
- Config
- Hooks
- Router
- URI
- Language
- Loader
- Controller
- Output
Substituindo Classes de Núcleo
Para usar suas próprias classes de sistema no lugar das padrões, simplesmente coloque suas versão dentro de seu diretório local application/libraries:
application/libraries/algumaclasse.php
Se este diretório não existir, você pode criá-lo.
Qualquer arquivo com o mesmo nome de um item da lista acima será escolhido no lugar daquele que normalmente seria usado.
Por favor, note que sua classe precisa usar o prefixo CI. Por exemplo, se seu arquivo chama-se Input.php, o nome da classe será:
class CI_Input {
}
Estendendo uma Classe de Núcleo
Se tudo o que precisa é adicionar uma certa funcionalidade à uma biblioteca existente - talvez uma ou duas funções - então é desnecessário substituir a biblioteca inteira com sua versão. Neste caso, é melhor simplismente estender a classe. Estender uma classe é praticamente igual a substituí-la, com algumas exceções:
- A declaração da classe deve estender a classe pai.
- O novo nome de seu arquivo da classe devem conter o prefixo MY_ (este item é configurável. Veja abaixo.):
Por exemplo, para estender a classe Input nativa, você precisa criar um arquivo chamado application/libraries/MY_Input.php, e declarar sua classe com:
class MY_Input extends CI_Input {
}
Note: Se você precdisar usar um construtor em sua classe, tenha certeza de estender o construtor pai:
class MY_Input extends CI_Input {
function My_Input()
{
parent::CI_Input();
}
}
Dica: Quaisquer funções em sua classe que tiverem o mesmo nome das funções na classe pai serão usadas no lugar as nativas (isto é conhecido como "método do sobrecarregamento"). Isto permite que você altere substancialmente o núcleo do Code Igniter.
Configurando seu próprio Prefixo
Para configurar seu próprio prefixo de subclasse, abra seu arquivo application/config/config.php e procure por este item:
$config['subclass_prefix'] = 'MY_';
Por favor, note que todas as bibliotecas nativas do Code Igniter têm o prefixo CI_ então NÂO USE isto como seu prefixo.