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?