Estender um controller do Code Igniter é uma boa forma de carregar um controller com algumas pré-definições, como validação de usuário, carregamento de bibliotecas ou definições de idioma.
Como estender um controller?
Para estender um controller (ou qualquer outra parte do Code Igniter) o primeiro passo é criar um arquivo que será carregado automaticamente e terá a classe que iremos utilizar.
No meu caso, para estender um controller vou criar um arquivo chamado MY_Controller.php no diretório:
application/core/MY_Controller.php
Dentro este arquivo crio uma classe para estender meu controller, por exemplo:
class MY_AdminController extends CI_Controller {}
E dentro desta classe eu adiciono o que for necessário para o meu controller extendido.
class MY_AdminController extends CI_Controller {
function __construct(){
parent::__construct();
header('Content-type: text/html; charset=utf-8');
$user = new User();
if(!$user->getLogged()){
die('There is only one god and his name is Death, and there is only one thing we say to Death: "Not today"');
}
}
}
E no arquivo do seu controller, ao invés de estender o controller você extende o MY_AdminController ou qualquer outro nome que você tenha utilizado.
Você pode ter mais do que uma extensão de controller, no mesmo arquivo de extensão (MY_Controller.php) é só criar uma outra classe e estender o mesmo Controller.
class MY_AdminController extends CI_Controller {}
class MY_App extends CI_Controller {}
Uma outra forma de estender é utilizar os hooks, que permitem um controle mais sensível de onde e o que carregar.
E você, como faz isso nas suas aplicações?